我在调用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);
启动此活动时,所有选项卡(片段)都有一个使用getSherlockActivity()
中doInBackground
的AsyncTask。
因此,对于所有AsyncTasks来说,它需要大约3-5秒,同时如果我按下并完成此活动,最后一个片段 Frag4 尚未启动其AsyncTask(可能排队等待尝试getSherlockActivity()
并崩溃。
我可以使用 Try-Catch块来解决这个问题,但有没有办法告诉片段如果父Activity已经死了,请停止所有后台任务等。 类似的东西?
谢谢
答案 0 :(得分:0)
只需在Activity onDestroy()回调中调用每个片段的AsyncTask.cancel()。这样,asynctasks不会根据被破坏的Activity上下文执行任何操作。