【发布时间】:2013-09-05 22:33:03
【问题描述】:
我知道以前有人问过类似类型的问题。抱歉再次询问。
我在标签 FragmentActivity 中有一个片段。在 onActivityCreated 的片段中,我必须在每个修复间隔后安排一个任务。
Timer t = new Timer();
t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
new fetchDataInBackground(ctx).execute(); //async task
}
});
}
}, 0, 20000);
上面的代码运行良好,直到我们在 tab 活动上按下返回按钮。
一旦按下后退按钮,它就会在上述代码的 getActivity() 上引发空指针异常。
我猜可能是片段已与活动分离,因此 getActivity() 返回 null。
我的问题是如何实现上述场景,以便即使按下后退按钮,该过程也应该继续。有什么最佳实践吗?
我正在从 FragmentPageAdapter 的 getItem 方法中返回相同的 Fragment 实例。
提前致谢!
【问题讨论】:
-
您正在为您的 Fragment 加载图像,如果您的 Fragment 不再存在,继续加载它是否有意义?
-
抱歉方法名称错误。编辑了方法名称。我的意思是在后台获取任何数据。
-
如果您希望更新数据,无论是否显示 Fragment,您都应该在服务中对其进行更新。
标签: android timer android-fragments android-asynctask android-tabactivity