MiUI AlarmManager 延迟

zealot09
  • 514

最近帮朋友做个闹钟的应用, 自己用的小米手机, 随手拿来测试, 发现每次闹钟都会有5分钟以内的随机的延迟, 折腾了好久才发现是 MIUI 对Android 本身的AlarmManager做了限制, 为了省电, 每5分钟做一次检查.

javaAlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        Log.d("AlarmModel", "alarm will wakeup in seconds: " + getAlarmTime().getTimeInMillis());
        alarmManager.set(AlarmManager.RTC_WAKEUP, getAlarmTime().getTimeInMillis(), pendingIntent);

但是用的正点闹钟之类的第三方APP, 完全都是准时响铃的, 所以很好奇他们的解决方案, 求解答

回复
阅读 10k
5 个回答
龟速
  • 213

正点闹钟会默认添加到自启动列表,因此可以正常唤醒。

小米在 Google官方 之前引入了 “对齐唤醒” 机制,以下是可能的解决办法(Google搜索结果,并未测试)

链接描述

对于小米这种看似有利用户,实则破坏 Android 生态的行为,个人表示抵制

灰常反感小米这种对API的大改,只会增加开发难度,破坏平台统一性

bigkkk
  • 3
新手上路,请多包涵

你调用setExact()试一下应该是可以做到准时的

javalue
  • 1
新手上路,请多包涵

正点闹钟在13年的时候也遇到过这种问题,后来是和miui团队沟通后解决的,(应该是后台给了api的源码),好不爽!

宣传栏