android - android - 引导接收器未触发
问题描述
所以我有一个基于使用 AlarmManager 的重复任务的应用程序,我希望在设备重新启动时初始化警报
因此,我做了一个引导接收器,代码提前:
[BroadcastReceiver(Enabled = true)]
[IntentFilter(new[] { Intent.ActionBootCompleted })]
public class BootReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
Log.Write("BootCompleted Alarm was received.");
Alarms.Init(context);
}
}
我还获得了使用权限:
[assembly: UsesPermission(Manifest.Permission.ReceiveBootCompleted)]
在我的设备设置中检查应用程序的权限时,它具有权限。
那么,为什么不火呢?
解决方案
新 api 中的一些限制在您注册以接收基于系统事件的广播时会导致问题(例如,AlarmManager)
在文档Statically registering a Broadcast Receiver with an Intent Filter 中:
在 Android 8.0(API 26 及更高版本)中,Google对应用程序在用户不直接与其交互时可以执行的操作进行了限制。这些限制会影响后台服务和隐式广播接收器,例如 Android.Content.Intent.ActionBootCompleted。由于这些限制,您可能难以在较新版本的 Android 上注册 Boot Completed 广播接收器。如果是这种情况,请注意这些限制不适用于前台服务,前台服务可以从您的广播接收器中调用。
推荐阅读
- python - 如何区分git中的几个小变化和日常变化?
- java - 如何在 feign 客户端中为 API 设置不同的读取超时?
- java - 我的交错链接列表功能没有更改所需的列表
- apache-spark - 固定长度文件读取 Spark,多种记录格式合二为一
- rest - Rest API 延迟比日志高
- python - 使用 Python 将列数据从 GB 转换为 TB
- r - 如何自定义 geom_text 中映射变量的颜色?
- android - React Native - Android 上的边框样式与 iOS 上的不同
- java - Java/Selenium - 文件名、目录名或卷标语法不正确 (java.io.IOException)
- javascript - 检测图案是否存在 Photoshop 脚本