AsyncTask
リスト作成ジョブを実行しているフラグメントがあります。内部ではAsyncTask.doInBackground()
、メソッドを使用しgetString()
て文字列を取得します。そこで IllegalStateException が数回スローされましたが、奇妙なことに、 Fragments 内で を kill し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 回しか発生していませんが、場合によってはフラグメント デタッチでのタスク キャンセルが機能しない原因を突き止めたいと思います。
すべてのヒントをいただければ幸いです。
-Mr.ドレスデン