Java 'android.os.Handler.postDelayed'会失败吗?
我想在前台服务中每隔5秒定期运行一个函数。为此,我使用了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
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线程和主线程。因此,如果进程销毁,那么我认为处理程序将销毁。除此之外,我认为操作系统不会单独取消延迟呼叫。应用程序在后台,但我在前台服务中运行此代码应用程序在后台,但我在前台服务中运行此代码