Skip to content

定时任务,采用AlarmManager+Service实现定时执行任务功能,Foreground Service+Timer也可以实现,只是容易被设备厂商拦截,所以才采用AlarmManager

Notifications You must be signed in to change notification settings

Wzhixiang/TimerInService

Repository files navigation

在服务中运行定时任务

    需要实现一个定时处理任务的功能,你会如何处理?
    
    这功能很简单不是吗,没错就是Foregound Service + Timer,啪啪啪,一顿乱敲功能实现了。然后开测试,
也很顺利,不管是真机,还是模拟器,只要在设备不休眠的情况下,都很顺利完成测试。一旦设备休眠,噩梦
也随之开始。

    于是开始google防止设备休眠的方法,像什么WakeLock、电池白名单、后台运行白名单一一上了一遍,结
果呢。比较好的结果只能在部分设备休眠后还能正常运行,并不能真正解决。

    继续探索,直到有一天想到AlarmManager。于是便有了今天这事,记录并分享AlarmManager实现定时执行
任务功能。

代码很少,也很简单,就没必要去可以分析。

需要注意三点:

* 省电模式会影响后台运行
* app加入电池优化白名单
* app加入系统厂商白名单

不能说此方法一定能适配所有手机:
目前通过系统有:magic3.0.1|emui 10.0.1|miui 11 9.9.27
资源有限,其他暂时未进行测试

About

定时任务,采用AlarmManager+Service实现定时执行任务功能,Foreground Service+Timer也可以实现,只是容易被设备厂商拦截,所以才采用AlarmManager

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages