나는 Activity A에서 실행되는 Asynctask B를 가지고있다. B의 post 실행시, 특정 조건에서 B는 자신의 새로운 인스턴스를 생성하고 실행할 수있다.실행 중이 아닌 AsyncTask를 취소하면 onCancelled가 호출됩니까?
내가 한 일은 AsyncTask 선언을 B 내부에 전역으로두고 onCancelled B를 재정 의하여 onpostexecute에서 작성된 새 인스턴스를 취소합니다.
그래서 onDestroy of Activity A b.cancel()은 onPostExecute가 실행 된 AsyncTask를 취소합니다. 다음과 같이 currentPlansAsync의
@Override
protected void onCancelled()
{
if(currentPlansAsync != null)
{
currentPlansAsync.cancel(true);
}
super.onCancelled();
}
그리고 새로운 인스턴스는 onPostExecute라고 :
private void processAfterFailure()
{
if(this.counter < 3)
{
ProgressDialog progressDialog =
GeneralUtils.showProgressDialog(parentActivity, parentActivity.getResources().getString(string.WaitDialogTitle),
parentActivity.getResources().getString(string.WaitDialogMessage));
this.counter++;
currentPlansAsync = new CurrentPlansAsync(parentActivity, application, progressDialog, application.planBL, this.counter);
currentPlansAsync.execute();
}
else
{
Toast.makeText(parentActivity, parentActivity.getResources().getString(string.SERVICE_ERROR), Toast.LENGTH_LONG).show();
}
}
내 질문입니다 AsyncTask를 B가 실행을 중지하고 다른 AsyncTask를의 C를 실행 활동 A가들의 OnDestroy로 이동 한 경우 B가 취소됨 (b.cancel(true);
) 클래스 B에서 재정의 된 onCancelled가 호출됩니까 ??
이것은 cancel()
경우, 내가 활동에서 실행 된 AsyncTask를하고 또한 AsyncTask를
작업이 완료된 후에는 취소 할 수 없습니다. 하지만 당신은 onCancelled 메소드를 public으로 만들고 대신 호출 할 수 있습니다. – vorrtex