java - 长时间延迟 Runnable

标签 java android

我试图将 Runnable 的执行延迟很长一段时间(大约几个小时)。

由于我必须更改的值仅影响 UI,因此当应用程序被终止时,可运行对象不必执行。使用 AlarmManager 或作业效率很低,因为如果应用程序关闭,它们将重新打开应用程序。

我的用例的完美候选者是 Handler,但不幸的是 Runnable 不会在如此长的延迟下执行。

我还尝试过 TimerScheduledThreadPoolExecutor 和其他使用线程的解决方案,但没有成功。

您知道如何实现我的需求吗?

最佳答案

您绝对应该看起来像AlarmManagerExecutors。我喜欢使用:

Executors.newSingleThreadScheduledExecutor()
.schedule(runnable, amount.toLong(), timeUnit)

或者使用JobScheduler:

JobScheduler scheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
// You can then cancel the job in onStop():
scheduler.cancelAll(); // or a specific job

您只需检查您的 View 是否仍然存在。

<小时/>

还有新的 WorkManager,但我还没有充分使用它来推荐它:https://developer.android.com/reference/androidx/work/WorkManager

关于java - 长时间延迟 Runnable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51966243/

相关文章:

java - 使用 Jrockit 进行 Java JFR 转储的 JMC 解析器

java - 是否可以通过使用 AtomicInteger 的方法来改变 int ?

java - 在Qt中调用java函数

android - 如何在数据库中更新其内容字符串时更新 ListView 行?

java - 将 Fragment 置于堆栈顶部

android - 从 java 代码更改 xml 选择器值

java - 从任意类获取Android资源值

java - 是否可以在 Spring MVC(或 Boot)的外部目录中使用 .jsp 文件?

android - Android 中的自定义选择器

android - 版本冲突更新到播放服务 9.4.0 Android studio 2.2