报警服务无法在手机的省电模式下工作

时间:2014-03-10 18:45:29

标签: java android broadcastreceiver alarmmanager

我有一个使用闹钟服务的应用程序。使用我正在设置的闹钟服务

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
                new Intent("com.mindedges.pkg.intent.action.NEW_HOUR"),
                PendingIntent.FLAG_UPDATE_CURRENT);

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

然后有一个接收器,然后播放一些声音。

Evertthing适用于我的手机和大多数用户,但有些客户抱怨。 “大多数时候应用程序都没有显示闹钟,而且只有在我按下电源按钮解锁手机时才会显示几分钟”

请注意,此客户已启用节电功能,并且还已将应用程序包含在待机模式下处于活动状态

可能的原因是什么?报警服务在节电模式下是否起作用?

相关文章:Android AlarmManager.set(...): notification never received when battery low

2 个答案:

答案 0 :(得分:0)

我已经凭经验发现重复警报的时间非常难以预测。例如,当我要求35分钟的时间段时,我会在大约35分钟的时间间隔内发出一些警报,相隔几个小时,有些警报在几分钟之内。

我发现只要求一次性警报就更容易预测,然后每次警报触发时重新提交一个新警报。

这种方法显然已成为谷歌的推荐。 AlarmManager page现在在SetRepeating的描述中添加了以下内容:“注意:从API 19开始,所有重复警报都不准确。如果您的应用程序需要精确的交付时间,那么它必须使用一次性精确警报,重新安排每个如上所述的时间.targetSdkVersion早于API 19的旧应用程序将继续将所有警报(包括重复警报)视为完全警告。“

答案 1 :(得分:0)

我在一个严重依赖提醒的应用程序上工作,通知用户何时服药。启用了PowerSave模式的三星设备将始终不在正确的时间触发警报。我已经看到它提前一小时发射的情况。因此,例如,希望在上午8:00提醒的用户在上午7:00接受药物接收通知。

注意:设置它并不重要。像往常一样,三星做他们自己的事情,所有的逻辑都消失了。

基本上,确保设置的触发时间足够接近当前时间:

=AND($C2=$D2,$A1=C$2,$C2<>$D2)