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

How to start handler again after calling removeCallbacks or removeCallbacksAndMessages on handler in android

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

// 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);

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

isHandlerStopped = true;
handler.removeCallbacksAndMessages(runnableCode);

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

handler.removeCallbacks(runnableCode);

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

但是我无法从 onPause 函数中删除 removeCallbacks 方法,我怎样才能用它再次启动处理程序。

如果有人知道如何做到这一点,请帮助我。

非常感谢。

您也可以覆盖 onResume 并在那里重新启动您的 Handler

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