Android Doze模式适配实验记录
课题:想定时执行一些代码,如每隔4分钟向服务器发送一个数据包。
实验1:用TimerTask.
机型:vivo android 9.0 V1911A vivoZ5X
经常休眠,有时候长几小时。
实验2:
机型:vivo android 9.0 V1911A vivoZ5X
自从Android6.0引入低功耗与待机模式之后,TimerTask就更不能胜任了,根据官方文档,要用.setExactAndAllowWhileIdle函数才能启动在Doze模式下正常运行,不过这个函数也会被推迟,比如通常是5分钟执行一次,6分钟执行1次,甚至9分钟,官方文档也提到了9分钟,进入Android源码阅读该函数的注释,说是在DOZE模式下,有可能还会推迟定时任务到15分钟。官方文档也提到了电池白名单,因此我将APP加入这个白名单测试,setExactAndAllowWhileIdle在国内厂商的执行情况还是不能准确执行,但是比之前已经强多了,至少不会出现几小时都不执行的情况。目前是一打开屏幕,立即会执行挂起的setExactAndAllowWhileIdle的定时任务。
非DOZE模式,则会正常4分钟后执行定时任务。这里解释一下,setExactAndAllowWhileIdle本身只执行1次,是我写了一些代码,在执行任务的时候,又调用1次setExactAndAllowWhileIdle,然 后这个执行任务就变成了 循环定时执行了,实现了Ti mer的循环定时执行功能。
在网上搜了很多,都遇到了setExactAndAllowWhil
文章来源: blog.csdn.net,作者:冉航--小虾米,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/gaoxiaoweiandy/article/details/95778748
- 点赞
- 收藏
- 关注作者
评论(0)