应该声明和初始化 AlarmManager 的正确上下文是什么,以便它们无限期地持续存在(或者直到系统重新启动或直到 Task Killer 实际上将其清除)并避免垃圾收集 - 但也允许跨整个警报更改警报整个应用程序的范围。
我使用 AlarmManager 的全部原因是为了解决始终运行服务的需要。然而,要完成这一壮举,AlarmManager 是在哪里创建的?我想它不能在服务中创建,然后关闭/销毁,因为警报对象最终会消失,警报会停止触发 - 不是吗?
我喜欢来自不同问题帖子的 AlarmManager 示例的想法,其中创建了 MyAlarm 类作为警报 onReceive 的 BroadcastReceiver 的扩展,并且 AlarmManager 在此类的构造函数中初始化。但是,如果跨多个上下文需要 MyAlarm 实例,此实现如何工作。例如,来自多个 Activity 对象的事件处理程序。来自多个 Widget 的事件处理程序。从工作人员服务中。所有这些都可能必须禁用或启用警报。我的猜测是,在您需要处理警报的任何地方创建一个本地实例,并且由于所有实例的 pendingIntent 都是相同的,因此您实际上将使用虚拟“单例”。
这只是概念性的,因为我不知道如何测试可能发生在 8、12、?的警报管理器的“垃圾收集”?几个小时后,当我的闹钟随机停止响起时。我的目标是,如果手机没有重新启动,并且我的任务没有被用户手动杀死,那么让警报无限期地触发。谢谢