我试图将 Runnable
的执行延迟很长一段时间(大约几个小时)。
由于我必须更改的值仅影响 UI,因此当应用程序被终止时,可运行对象不必执行。使用 AlarmManager 或作业效率很低,因为如果应用程序关闭,它们将重新打开应用程序。
我的用例的完美候选者是 Handler
,但不幸的是 Runnable
不会在如此长的延迟下执行。
我还尝试过 Timer
、ScheduledThreadPoolExecutor
和其他使用线程的解决方案,但没有成功。
您知道如何实现我的需求吗?
最佳答案
您绝对应该看起来像AlarmManager
或Executors
。我喜欢使用:
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/