asynctask에서 Thread를 돌리면서 중지버튼 클릭 이벤트에 Cancel(true)를 실행하였습니다.
실행후 isCancelled()에서는 정상적으로 true가 반환되서 돌아오는데,
Thread 중지 후 작업을 주려고 onCancelled메소드를 오버라이드 해서 구현 했습니다.
근데 onCancelled 메서드가 호출이 안되더라구요.. 질문 올리기 전에 구글링을 통해 좀 알아 봤습니다만,,
명확한 답을 찾기가 어려워 도움을 청합니다..
cancel 실행 부분과 onCancelled 는 아래와 같이 구현해 테스트중입니다.
@Override
protected void onPreExecute() {
progressBar = new ProgressDialog(dContext);
progressBar.setButton(DialogInterface.BUTTON_NEGATIVE, getString(R.string.erase_dtc_stop), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
LogUtil.d("중지");
eraseDtcTask.cancel(true);
System.out.println(eraseDtcTask.isCancelled() + " : isCancelled");
}
});
progressBar.setCancelable(false);
progressBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressBar.setMessage(getString(R.string.erase_dtc_wait));
super.onPreExecute();
}
@Override
protected void onCancelled(Boolean result) {
System.out.println("called cancel");
publishProgress("PROGRESS_BAR_CHANGE", "중지중..");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
progressBar.dismiss();
publishProgress("NOTICE", "중지 완료");
}