【发布时间】:2019-12-04 06:07:31
【问题描述】:
大家好,周五好,
我知道这似乎是一个重复的问题,但它不是,我会解释你为什么:
有几种方法可以在预定时间执行任务,例如 TimerTask 或 ScheduleExecutorService,但它们都不适合我正在尝试做的事情,因为这些方法都像这样工作:
- --> 第一次,执行void run()里面的代码
- --> 执行后,每隔指定时间再次运行一次。
但我不希望我的代码在预定时间后一次又一次地运行,我希望我的代码总是在每个预定时间执行,即使是第一次。
还有一个问题:如果android停止后台服务会怎样? 我添加了一个 Restarter 接收器,因此服务会重新启动,所以,
后台服务重启后会发生什么? 由于 TimerTask 或 ScheduleExecutorService 被杀死并重新启动,上述步骤将从 1 重复到 2。
结果如何?
假设我想每 3 分钟 运行一个任务,但 android 在 仅 30 秒 后终止了我的服务:自从第一次 void 内的代码运行() 被执行,结果是我的代码在 30 秒后执行,而不是 3 分钟!
所以我的问题是:是否可以每 X 分钟在 Android 后台服务中运行一个任务或方法来避免上述问题?
谢谢!
【问题讨论】:
-
您是否阅读过文档,例如Guide to background processing,了解您的选择?
-
自 Oreo 以来,不可能有后台服务“坚持”。如果您的应用不是“当前处于活动状态”(正在使用或最近使用的活动),则不允许启动任何后台服务。
-
@Pawel 我知道,实际上它是作为前台服务启动的