当前位置:  开发笔记 > 编程语言 > 正文

Android闹钟事件被延迟

如何解决《Android闹钟事件被延迟》经验,为你挑选了1个好方法。

我开发了我的android闹钟应用程序,每小时需要一些东西(如下午1点,下午2点,下午3点,下午4点,下午5点,下午6点等).

现在我正在使用alarmManager,这样我每小时都会收到一次broadCast事件.但有时事件会延迟.

AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

Log.d(Constants.APP_TAG, "setting beep alarm");
PendingIntent  pendingIntent = PendingIntent.getBroadcast( context, 0, new Intent("com.mindedges.beephourly.intent.action.NEW_HOUR"),PendingIntent.FLAG_UPDATE_CURRENT );

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, AlarmSheduleHelper.getImmediateNextHour().getTimeInMillis(),AlarmManager.INTERVAL_HOUR, pendingIntent);

我怎样才能确保我准确地按时收到广播事件.

PS:某些特定的手机/ anroid版本会延迟



1> Konstantin L..:

在Android 6.0棉花糖中,Google引入了“打ze”模式。

在此处了解更多信息:优化打ze睡和应用待机

和/或在这里观看:Android Marshmallow 6.0:打ze模式简介

对于您的情况,Google建议改用setAndAllowWhileIdle哪个强制电话绕过打ze模式set(而setExactAndAllowWhileIdle不是)setExact

注意!似乎没有的类似物setRepeating,因此您必须setExactAndAllowWhileIdle逐一手动安排下次递归。

对于具有Android 4.4 KitKat及更高版本的设备-考虑使用setExact而不是old set,因为OS会尝试转移警报,以最大程度地减少唤醒和电池消耗。

还有很多要注意的地方-例如,某些OEM可能预先安装了自己的utils,以节省电池寿命,但至少它必须涵盖库存的Android以及大概大多数流行的设备。

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有