2

我正在null打电话getSherlockActivity();

这是因为 Activity 是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);

当这个 Activity 启动时,所有的 Tabs(Fragments) 都有一个getSherlockActivity()doInBackground.

因此,要完成所有 AsyncTask,大约需要 3-5 秒,同时如果我按下并完成此 Activity,尚未启动其 AsyncTask(可能已排队)的最后一个片段Frag4getSherlockActivity()会尝试并崩溃。

我可以只使用Try-Catch 块来解决这个问题,但是有没有办法告诉片段如果父 Activity 已死,停止所有后台任务等。类似的东西?

谢谢你

4

1 回答 1

0

只需在 Activity onDestroy() 回调中调用每个片段的 AsyncTask.cancel() 即可。这样,异步任务就不会基于已销毁的 Activity 上下文执行任何操作。

于 2013-01-30T13:01:39.920 回答