最近在练习 Android 广播的时候,写了一个测试 app ,监听亮屏,灭屏与解锁广播。BroadcastReceiver 是动态注册的,在 Application 中进行。收到广播后,弹一个 Toast 。
在我的这台华为( DVC-AN00, HMOS 2.0.0 )安装运行,灭屏解锁,正常弹 Toast 。 但在我拔掉 USB ,灭屏 3 ,5 分钟后,再解锁,无任何反应,没有 Toast 。(等个一段时间)然后我插上 USB 看日志,这时刷刷刷的弹 Toast 。
换一台小米手机( MI 9 SE, Android 10 )安装运行,与上面场景一样,Toast 弹出正常,中间也尝试过等比较长时间,也是正常的,就华为手机不正常。
很奇怪的现象,有哪位大神知道原因不?不胜感激。
1
gam2046 2021-12-31 17:56:42 +08:00
系统限制了自启动,基本上能够变相实现自启动的广播,包括但不限于电量、时间、信号、屏幕变化等,国内各种 UI 都进行了限制。需要用户手动设置为不限制后台活动。
|
2
sdushn 2021-12-31 17:57:21 +08:00
机型问题一般需要看不同 os 源码来定位了,比较麻烦。这个场景下 app 一直在后台吧?可能需要考虑后台保活
|
3
wiikzz OP @sdushn 就 3 ,5 分钟,应用在后台是活着的。后台打 Log 发现,他是解锁广播根本就没有下发到我的 br ,直到我插上 USB 或者打开应用的那一刻,我的这 br 就一下子收到亮屏、解锁广播。
|
4
kokutou 2022-01-02 11:57:21 +08:00 via Android
防止解锁就自启的。
以前一解锁,各大流氓就开始更新拉推送,解锁就掉帧。导致手机卡的一笔的印象,什么破垃圾收集。 把省电什么设置都关了试试吧。 |