WorkManager的问题
后台周期性执行一个定时任务,可能几分钟,或者几秒,使用time task
,countdownTime
等无法避免应用在后台在某些设备上不执行的问题,但是使用workmanager
能够大大增大我们的渗透率,总结一些过程中的问题。
1.如何使用workmanager
来周期执行几分钟的任务
官方文档已经说明了PeriodicWorkReques
t的最低间隔时间是15min
. 基于这个问题我基于OneTimeWorkRequest
实现周期任务,也很简单就是在OneTimeWorkRequest
任务执行完毕新建一个OneTimeWorkRequest
任务,这里的时间间隔是没有限制的。
2.多个workmanager
重复执行的问题
这个是由于我们的任务已经加入work队列了,没有执行APP就被杀死了,app重新启动任务的时间到了,这个时候就会导致任务多次重复执行。解决办法就是基于自己的需求要在合适时机cancel掉我们的任务就好了,例如cancelAllWorkByTag
或者cancelAllWork
。
后面有空会考虑的研究workmanger内部的实现逻辑