마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 AsyncTack 클래스 사용시 문의드립니다.

0 추천
  
BackgroundTask task;
int value;
class BackgroundTask extends AsyncTask<Integer , Integer , String> {
    protected void onPreExecute() {
        value = 0;
        //progress.setProgress(value);
        dialog= new ProgressDialog(MainActivity.this); //ProgressDialog 객체 생성
        dialog.setTitle("Progress");                   //ProgressDialog 제목
        dialog.setMessage("Loading.....");             //ProgressDialog 메세지
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //막대형태의 ProgressDialog 스타일 설정
        dialog.setCanceledOnTouchOutside(false); //ProgressDialog가 진행되는 동안 dialog의 바깥쪽을 눌러 종료하는 것을 금지

        dialog.show(); //ProgressDialog 보여주기
    }

    protected String doInBackground(Integer ... values) {
        while (isCancelled() == false) {
            value++;
            if (value >= 100) {
                break;
            } else {
                publishProgress(value);
                A();            }

            try {
                Thread.sleep(200);
            } catch (InterruptedException ex) {}
        }

        return "Complete Load";
    }

    protected void onProgressUpdate(Integer ... values) {
      //  progress.setProgress(values[0].intValue());
        //textView01.setText("Current Value : " + values[0].toString());
        dialog.setProgress(values[0]);
    }

    protected void onPostExecute(String result) {
       // progress.setProgress(0);
        dialog.dismiss();
        dialog=null;
      //  textView01.setText("Finished.");
        Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
    }

    protected void onCancelled() {
      //  progress.setProgress(0);
      //  textView01.setText("Cancelled.");
    }
}
위와 같이 어싱크테스크 클래스 구현 후에,버튼을 눌렀을 시, 하기와 같이 실행하여 백그라운드작업을 하였으나,
task = new BackgroundTask();
task.execute(100);
현재  doInBackground(Integer ... values)
 함수 내에 사용된 A라는 함수가 100번 
반복 동작하기를 원하였으나, 실제 테스트 결과
 A라는 함수가 20~30번 동작하고 백그라운드 작업이 끝나버립니다.
이렇게 동작하는게 정상적인 상황인지요.? 
원하는 시행횟수만큼 백그라운드에서
 동작시키도록 구현이 필요한데 방법이 
있을지 고수님들의 의견 부탁드립니다.
  
개발쟈 (120 포인트) 님이 2016년 8월 18일 질문
개발쟈님이 2016년 8월 19일 수정
A 메소드가 어떤 동작을 하는 건가요? A 안에서 시간이 걸리는 작업을 할 경우라면 문제가 될 수도 있습니다.

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...