处理程序不从removeCallbacksAndMessages()方法中删除回调

问题描述 投票:0回答:1

当用户打开片段时,我需要在30秒后调用服务。所以,我执行以下代码。

handler.postDelayed(runnable, 30000); 

runnable = new Runnable() {
    public void run() {
       fetchData(true);
    }
};

但是当用户离开片段时我需要停止这个处理程序,所以我在所有可能的暂停块中执行以下代码,但问题是如果我转到其他片段或在历史记录中放置应用程序,它会不断访问服务。

@Override
public void onStop() {
    super.onStop();
    if(handler!=null) {
        handler.removeCallbacksAndMessages(null);
        handler.removeCallbacks(runnable);
}


@Override
public void onPause() {
    super.onPause();
    if(handler !=null){
        handler.removeCallbacksAndMessages(null);
        handler.removeCallbacks(runnable);
    }
}


@Override
public void onDetach() {
    super.onDetach();
    if(handler !=null){
        handler.removeCallbacksAndMessages(null);
        handler.removeCallbacks(runnable);
    }
}

我需要知道如何取消处理程序。

android android-layout android-fragments android-handler
1个回答
1
投票

我需要知道如何取消处理程序

没有像启动或停止或取消处理程序。它的工作就是将Runnables和Messages发布到线程队列。

你已经写了handler.removeCallbacks(runnable);来删除之前开始的callBacks。我认为这对你来说已经足够了。

© www.soinside.com 2019 - 2024. All rights reserved.