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번 동작하고 백그라운드 작업이 끝나버립니다.
이렇게 동작하는게 정상적인 상황인지요.?
원하는 시행횟수만큼 백그라운드에서
동작시키도록 구현이 필요한데 방법이
있을지 고수님들의 의견 부탁드립니다.