Android Doze模式适配实验记录

举报
yd_57386892 发表于 2020/12/29 01:12:12 2020/12/29
【摘要】   课题:想定时执行一些代码,如每隔4分钟向服务器发送一个数据包。 实验1:用TimerTask. 机型:vivo android 9.0  V1911A vivoZ5X 经常休眠,有时候长几小时。 实验2: 机型:vivo android 9.0  V1911A vivoZ5X 自从Android6.0引入低功耗与待机模式之后,TimerTask就更不能胜任了...

 

课题:想定时执行一些代码,如每隔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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。