我有一个片段,其AsyncTask
运行列表填充作业。在AsyncTask.doInBackground()
内部,我使用方法getString()
来获取字符串。我在那里抛出了几次IllegalStateException,但奇怪的是我杀死了片段AsyncTask
中的onDetach()
。
我的AsyncTask代码非常多:
myTask = new AsyncTask<Void, Void, Void>(){
@Override
protected void doInBackground(){
//code...
String message;
//code...
if(//some eval){
message = mContext.getString(R.string.Eval_true) <= Causes exception in rare cases
}
}
}
在片段的onDetach方法中我做了:
@Override
public void onDetach(){
if(myTask != null && myTask.getStatus() != AsyncTask.Status.FINISHED){
myTask.cancel(true);
}
super.onDetach();
}
正如我所说的那样,在150到200次运行期间,这种情况只发生了2-3次,但我仍然想知道在某些情况下可能导致片段分离上的任务取消的原因无效。< / p>
所有提示都表示赞赏。
-MrDresden