如何在android中的handler上调用removeCallbacks或removeCallbacksAndMessages后再次启动处理程序

时间:2016-06-10 05:58:07

标签: android handler

我正在开发一个Android应用程序,并且Fragment我每60秒发送一次API请求。我在此Handler中使用Fragment以下列方式执行此工作:

// Global Variable in Fragment
private boolean isHandlerStopped = false;

// Create the Handler object (on the main thread by default) Handler handler = new Handler();

// Define the task to be run here
private Runnable runnableCode = new Runnable() {
    @Override
    public void run() {

        if(!isHandlerStopped){

            // Get the No of New Feeds
            functiontoCall();

            // Repeat this runnable code again every 60 seconds
            handler.postDelayed(runnableCode, 60000);
        }
    }
};
handler.post(runnableCode);

现在我在这个片段中有一些链接会在应用程序中打开一些活动,在该活动中,这个片段将再次加载。 当我在其他一些活动中加载这个片段时,我需要从这个处理程序中删除回调,因为在这种情况下我不想向API发送请求。 所以,我检查了条件并使用下面的代码来停止callBack。

isHandlerStopped = true;
handler.removeCallbacksAndMessages(runnableCode);

并且在onPause函数中我写了以下行:

handler.removeCallbacks(runnableCode);

现在当我再次回到我的片段时,处理程序不起作用,如果我从onPause函数中删除removeCallbacks并且它工作正常。

但是我无法从removeCallbacks函数中删除onPause方法,如何再次启动处理程序。

如果有人知道怎么做,请帮助我。

非常感谢先进。

1 个答案:

答案 0 :(得分:1)

您也可以覆盖onResume并重新启动Handler

@Override
protected void onResume() {
    super.onResume();
    handler.post(runnableCode);
}