2

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.ドレスデン

4

0 に答える 0