2

null通話中に取得していますgetSherlockActivity();

これは、アクティビティがfinished or killed

私の場合、避けるべき解決策を思い付くことができませんでした:

このSherlockActivityには、4つのタブを持つViewPagerがあります。

adapter = new PagerAdapter((SherlockFragmentActivity) this, mViewPager);
adapter.addTab(actionBar.newTab(), Frag1.class, bundle);
adapter.addTab(actionBar.newTab(), Frag2.class, bundle);
adapter.addTab(actionBar.newTab(), Frag3.class, bundle);
adapter.addTab(actionBar.newTab(), Frag4.class, bundle);

このアクティビティを起動すると、すべてのタブ(フラグメント)にで使用するAsyncTaskがありgetSherlockActivity()ますdoInBackground

したがって、すべてのAsyncTasksが完了するまでに、約3〜5秒かかります。その間、このアクティビティを押して終了すると、AsyncTask(キューに入れられる可能性があります)をまだ開始していない最後のフラグメントFrag4getSherlockActivity()が試行され、クラッシュします。

Try-Catchブロックを使用してこれを解決することもできますが、親アクティビティが停止している場合は、すべてのバックグラウンドタスクなどを停止してフラグメントを通知する方法はありますか?

ありがとうございました

4

1 に答える 1

0

Activity onDestroy() コールバックで各フラグメントの AsyncTask.cancel() を呼び出すだけです。そうすれば、破棄された Activity コンテキストに基づいて asynctasks は何も実行しません。

于 2013-01-30T13:01:39.920 に答える