我正在开发一个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
方法,如何再次启动处理程序。
如果有人知道怎么做,请帮助我。
非常感谢先进。
答案 0 :(得分:1)
您也可以覆盖onResume
并重新启动Handler
:
@Override
protected void onResume() {
super.onResume();
handler.post(runnableCode);
}