首页 > 解决方案 > `android.os.Handler.postDelayed` 会失败吗?

问题描述

我想在前台服务中每 5 秒定期运行一个函数。我用android.os.Handler.postDelayed它,像这样:

private Handler handler = new Handler();
private Runnable updater = new Runnable() {
    @Override
    public void run() {

        // Do some work

        scheduleTask();
    }
};

private void scheduleTask() {
    handler.postDelayed(updater, 5000);
}

@Override
public void onCreate() {
    super.onCreate();

    scheduleTask();
}

@Override
public void onDestroy() {
    super.onDestroy();

    handler.removeCallbacks(updater);
}

有可能handler.postDelayed失败吗?操作系统可以取消延迟的请求吗?怎么抓?我需要它稳定运行好几天。

标签: javaandroidandroid-handler

解决方案


如果应用程序在前台,则处理程序不可能被取消。只有当应用程序在后台运行一段时间或主线程已被破坏时,它才会被取消。

作为参考,您可以阅读 android 开发者文档 https://developer.android.com/reference/android/os/Handler


推荐阅读