最近项目需要利用AlarmManager在cpu休眠的情况下唤醒百度定位,调用示例代码如下:
--周期性执行定位广播
public static void sendLocationBroadcastRepeat(Context ctx) {
Intent intent = new Intent(ctx, LocationBroadcast.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(ctx, 0,
intent, 0);
// 开始时间
long firstime = SystemClock.elapsedRealtime();
AlarmManager am = (AlarmManager) ctx
.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstime,
10 * 1000, pendingIntent);
Log.i(TAG, "sendUpdateBroadcastRepeat is start");
}
备注:设置10秒循环调用广播,在运行的过程中,发现并没有按照设置的时间调用。开始以为是代码问题,经过排查代码并无错误。在魅族2手机下测试,运行正常(按照设置运行)。为什么在小米手机下没有按照设置运行了?
反复测试发现,小米手机会以5分钟的间隔循环调用广播:如下图
问题跟踪:
- 电话致电小米技术支持,对方答复重刷小米最新版MIUI(开发版),重刷结果还是老样子;
- 重刷最新稳定版,结果还是一样;
- 。。。。。。
有知道问题原因的博友们麻烦告知一下。谢谢!
问题解决:
- 将firstime的值设置为大于等于5分钟即可(目前小米MIUI都是这个情况,希望小米可以改进这个问题)