Android P Beta – AlarmManager通知不起作用

前端之家收集整理的这篇文章主要介绍了Android P Beta – AlarmManager通知不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在Android P beta版本4上测试我的应用程序.我的应用程序的targetSdkVersion是27

据观察,警报管理器通知未按预期工作.我正在使用下面的代码来设置通知

           if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
                alarmManager.set(AlarmManager.RTC_WAKEUP,triggerAtMillis,AlarmIntentBuilder.buildPendingIntent(context,uri));
            } else if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
                alarmManager.setExact(AlarmManager.RTC_WAKEUP,uri));
            } else {
                alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,uri));
            }

我在Android 8.0上测试了相同的逻辑,但它运行正常.在Android 9.0中,通知正在运行,但有时它们根本不起作用.此外,如果它们工作,它们不准确并且花费太多时间,即使应用程序在前台也会发生这种情况.

逻辑是,我是在特定时间设置的重复提醒,并且应该在指定时间每天重复它们.这些都是高优先级的提醒,应该在准确的时间登陆,所以我使用setExact,一旦收到通知,它就会被显示,同一天下一周的新警报被设置.

我检查了Android P API文档,但找不到任何对AlarmManager和Notifications的工作有影响的链接.只有我认为导致问题的是Android P中的电源管理和优先级桶.但是,即使应用程序位于前台,通知也无法正常工作.

我在这里缺少的任何东西.任何帮助深表感谢.

最佳答案
正如您自己所提到的,电源管理的新App Standby Buckets功能可能是原因.新文件指出:

If an app is in the frequent bucket [or below],the system imposes stronger restrictions on its ability to run jobs and trigger alarms

In particular,the bucket determines how frequently the app’s jobs run,how often the app can trigger alarms

此外,如果您查看Power Details,您可以大致了解延迟时间.

enter image description here

值得注意的是,看起来你的存储桶是基于平均使用量(和机器学习)而不是当前使用情况 – 这意味着即使你的应用程序刚刚出现在前台,这些存储桶也会扮演一些角色

猜你在找的Android相关文章