Android Alarm Manager setExactAndAllowHileidle()在睡眠模式下无法在Android 7.0牛轧糖中工作
我正在尝试使用alarm Manager的Android Alarm Manager setExactAndAllowHileidle()在睡眠模式下无法在Android 7.0牛轧糖中工作,android,android-intent,android-alarms,android-7.0-nougat,android-doze,Android,Android Intent,Android Alarms,Android 7.0 Nougat,Android Doze,我正在尝试使用alarm Manager的设置ExactAndAllowHileidle每隔30分钟在我的应用程序中触发一次警报,但它不起作用 我通过在收到报警信号时发出推送通知来测试功能 问题是:当设备闲置一段时间后进入睡眠模式时,我不再收到警报。然而,只要我打开屏幕,我就会收到一个通知。我的应用程序需要准确的警报,需要每30分钟准时发送一次!由于设备处于睡眠模式,它无法接收延迟报警或丢失的报警 我在代码中使用了以下内容: 我在打开应用程序时设置了闹钟 我使用WakefulBroadcasti
设置ExactAndAllowHileidle
每隔30分钟在我的应用程序中触发一次警报,但它不起作用
我通过在收到报警信号时发出推送通知来测试功能
问题是:当设备闲置一段时间后进入睡眠模式时,我不再收到警报。然而,只要我打开屏幕,我就会收到一个通知。我的应用程序需要准确的警报,需要每30分钟准时发送一次!由于设备处于睡眠模式,它无法接收延迟报警或丢失的报警
我在代码中使用了以下内容:
onReceive()
方法我设置下一个报警。我也开始
仅发出推送通知的startWakefulService,然后停止
本身- wakefulbroadcastReceiver类已在清单中注册
- 我添加了以下权限:
android.permission.WAKE\u LOCK
- 我尝试将我的应用程序列为白名单,但结果是一样的
- 我试着使用
,即使在打瞌睡的时候,它也能一直工作 模式,每50个报警就有一个下降/延迟报警。所以也不是 完美的我不希望用户一直看到报警图标 在那里setAlarmClock()
- 不仅SetExactAndAllowHileIDLE()在打瞌睡时不起作用,而且
当它工作时,具有可怕的准确性。我通常会收到很多报警信号
1-3分钟后或1-3分钟前 - 我正在使用华为Mate 8和安卓7.0牛轧糖进行测试
- 如果您需要设置打盹时发出的警报,请使用 setAndAllowHileId()或setExactAndAllowHileId()
- 使用setAlarmClock()设置的警报将继续正常触发-警报 在警报响起前不久,系统退出
setExactAndAllowHileIDLE()
?,每30分钟获取一次准确的报警信号呢?!
还有,为什么
setAlarmClock()
100%不可靠 我遇到了和你一样的问题,我花了很长时间寻找解决方案。但我没有找到一个通用的解决方案
三星设备的解决方案如下:
第一个答案不起作用,但是第二个答案:)你可能会得到准确的警报,但是 系统忽略尾流锁 因此,如果你真的需要每30分钟触发一次,这似乎是唯一可以接受的解决方案。这可能会抵消所有打瞌睡模式的节能效果 顺便说一句:您似乎可以看到带有
adb shell dumpsys alarm
的报警
可能性:使用 Firebase JobDispatcher是一个用于在Android应用程序中调度后台作业的库。它提供了一个与JobScheduler兼容的API,可在所有安装了Google Play服务的Android最新版本(API级别14+)上运行
您是否尝试将应用程序添加到电池优化白名单?正如一些新闻所指出的(),华为有一些特殊的电池管理。如果你想在每次定时器启动时显示通知,那么你可以使用后端服务器向Android用户发送数据通知 您需要将Android客户端的FCM令牌保存在后端服务器中,服务器将负责将通知推送到这些客户端
我知道仅仅显示一个通知有点复杂,但这就是安卓系统的工作原理 也许我也有同样的问题,看到了相似的观察结果。我希望谷歌的人能站出来解决这个问题。@Mena你找到解决方案了吗,我也有同样的问题。@caucukien仍然没有解决方案。@Mena你找到解决方案了吗?是的,我一直在使用adb外壳设置设备打瞌睡和监控警报,然而,通过密集测试,平均准确率为49/50,其中1个警报下降/延迟。。。。。我会处理警报图标一直可见的问题,但是发出警报是灾难性的。我不知道人们是否注意到了这样的问题,或者只是我的设备有点怪异。你考虑过使用吗?它使用谷歌游戏,被认为是准时的。不,我没有。但是它不是建立在JobScheduler之上吗?哪个AlarmManager是它的一部分?它实现了相同的接口。某处有人说,它允许用户准确地安排警报,因为谷歌可以阻止邪恶的东西。看见