java - `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
失败吗?操作系统可以取消延迟的请求吗?怎么抓?我需要它稳定运行好几天。
解决方案
如果应用程序在前台,则处理程序不可能被取消。只有当应用程序在后台运行一段时间或主线程已被破坏时,它才会被取消。
作为参考,您可以阅读 android 开发者文档 https://developer.android.com/reference/android/os/Handler
推荐阅读
- python - 将修改后的 *args 传递给 python 中的基类
- mysql - MySQL 触发器运行总数
- html - 如何从导航栏-collapse [ASP.NET webform] 中删除不需要的数字
- django - 图片未显示在我的 heroku 网站上。静态文件加载正常
- python - Python:检查今天是否是本月的第一个工作日
- google-chrome-os - chrome.system.network 在基于 ARM 的 Chromebook 上返回“未定义”
- linux - 如何在 Linux 中创建用于 Github 的 Jenkins SSH 密钥?
- python - 熊猫面板无法完成操作
- fortran - 具有索引条件的两个 do-loop 的 OpenMP 并行化
- microsoft-graph-api - 为什么我无法获得所有用户使用 Micosoft Graph API 签出的 SharePoint 文档的签出状态