Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 'android.os.Handler.postDelayed'会失败吗?_Java_Android_Android Handler - Fatal编程技术网

Java 'android.os.Handler.postDelayed'会失败吗?

Java 'android.os.Handler.postDelayed'会失败吗?,java,android,android-handler,Java,Android,Android Handler,我想在前台服务中每隔5秒定期运行一个函数。为此,我使用了android.os.Handler.postDelayed,如下所示: private Handler handler = new Handler(); private Runnable updater = new Runnable() { @Override public void run() { // Do some work scheduleTask(); } }; pr

我想在前台服务中每隔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);
}
处理程序.postDelayed
是否可能失败?操作系统可以取消延迟的请求吗?怎么抓住那个?
我需要它稳定运行几天。

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

作为参考,您可以阅读android开发者文档

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

作为参考,您可以阅读android开发者文档

可能会出现这样的情况:检查服务销毁方法。
Handler
依次将线程和主线程连接到Looper。因此,如果进程销毁,那么我认为
处理程序将销毁。除此之外,我认为操作系统不会单独取消延迟的调用。可能的情况是:检查服务销毁方法。好的
Handler
依次连接到Looper线程和主线程。因此,如果进程销毁,那么我认为
处理程序将销毁。除此之外,我认为操作系统不会单独取消延迟呼叫。应用程序在后台,但我在前台服务中运行此代码应用程序在后台,但我在前台服务中运行此代码