Fragment中的计划任务将getActivity返回为null

时间:2013-09-02 19:23:21

标签: android timer android-fragments android-asynctask android-tabactivity

我之前会问过类似的问题。很抱歉再次提问。
我在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);

上述代码完全正常,直到我们按下标签活动上的后退按钮 按下后退按钮后,它会在上面代码的getActivity()上抛出空指针异常 我猜可能是片段已经与活动分离,因此getActivity()返回null。 我的问题是如何实现上述场景,以便即使按下后退按钮也应该继续进行。任何最佳做法?
我从FragmentPageAdapter返回getItem方法中的Fragment的相同实例。

提前致谢!

1 个答案:

答案 0 :(得分:0)

FragmentManagermActivity后不久设置片段的onAttach()字段,并在null后不久将其设置为onDetach()(请参阅source code),所以我的猜测是你试图在片段生命周期中过早或过晚地执行getActivity()