去年换了一加 7Pro 作为主力机,刷了氧 OS,日常使用 GCM 推送机制优化后台节省电量,体验如丝般顺滑,非常满意。但是没高兴几天,问题就来了。
开始的时候没注意到推送问题,后来晚上有一天忘记充电,注意到包括 Gmail 在内的一堆应用在早上解锁后立刻弹出一堆消息,很多是睡觉就应该推送而没有提醒的。但是也有一些应用例如知乎却能正常的实时推送。
立刻去查看系统中电源优化等设置,取消各种电池优化后依然没用,锁屏五分钟后,就收不到消息了。
查看后台的 google play service,也没问题,有知乎的推送记录。
但是我注意到了推送有一个 priority, 只有 priority 是 High 的情况下,在锁屏后能实时推送,而 gmail 客户端是 Unknown,知乎是 High。
https://imgchr.com/i/8PyxXR查了很多资料得知是 Android 的 doze mode 在作怪, 在手机未连接充电线并锁屏超过若干分钟后(未验证,一加 7p 是五分钟),手机进入 doze mode,系统为节省电量只给用户推送 High priority 的应用消息。
没错,谷歌认为 Email 这种通讯方式不是实时的,并且用户没有权限自行提高或降低某个应用推送的 Priority。
如果想在锁屏下实时接收 gmail 客户端以及其他 priority 是 Unknown 和 Normal 应用的推送消息,需要利用 adb 命令关闭 doze mode: adb shell dumpsys deviceidle disable
谷歌出 doze mode 的初衷是好的,但用几天下来并没有感受到关闭和开启 doze mode 在续航上的差异。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/651515
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.