我有一个AsyncTask
正在运行列表填充作业的片段。在里面AsyncTask.doInBackground()
我使用方法getString()
来,得到一个字符串。我在那里抛出了几次 IllegalStateException ,但奇怪的是我杀死AsyncTask
了 Fragments 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 次,但我仍然想找出在某些情况下可能导致片段分离时的任务取消不起作用的原因。
感谢所有提示。
-德累斯顿先生