gpt4 book ai didi

Android P Beta - AlarmManager 通知不工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:53:15 29 4
gpt4 key购买 nike

我正在 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, triggerAtMillis, AlarmIntentBuilder.buildPendingIntent(context, uri));
} else {
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, triggerAtMillis, AlarmIntentBuilder.buildPendingIntent(context, uri));
}

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

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

我检查了 Android P API 文档,但找不到任何影响 AlarmManager 和通知工作的链接。我觉得唯一导致问题的是 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 P Beta - AlarmManager 通知不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51587458/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com