【问题标题】:android - Alarm stops firing after some timeandroid - 一段时间后警报停止触发
【发布时间】:2020-08-07 15:56:40
【问题描述】:

我有一个每小时触发一次并在特定条件下执行代码的警报 它工作顺利,但是当我让我的应用程序未打开时(警报初始化在应用程序启动时)它会在一段时间后停止,这些是日志:

8/2/2020 6:27 AM Initializing Alarm, next alarm will fire at 8/2/2020 3:27 AM
8/2/2020 6:27 AM Application starting.
8/2/2020 6:28 AM Application stopped.
8/2/2020 6:28 AM Reports alarm received.
8/2/2020 7:28 AM Reports alarm received.
8/2/2020 8:28 AM Reports alarm received.
8/2/2020 9:28 AM Reports alarm received.
8/2/2020 9:28 AM Reports alarm finished.
8/2/2020 10:28 AM Reports alarm received.
8/2/2020 10:28 AM Reports alarm finished.
8/2/2020 11:28 AM Reports alarm received.
8/2/2020 11:28 AM Reports alarm finished.
8/2/2020 12:30 PM Reports alarm received.
8/2/2020 12:30 PM Reports alarm finished.
8/2/2020 1:30 PM Reports alarm received.
8/2/2020 1:30 PM Reports alarm finished.
8/2/2020 2:30 PM Reports alarm received.
8/2/2020 2:30 PM Reports alarm finished.
8/3/2020 8:13 AM Initializing Alarm, next alarm will fire at 8/3/2020 5:13 AM

如您所见,在第二天下午 2:30 到上午 8:13 之间,没有发出任何警报

这是初始化:

alarmMgr.SetInexactRepeating(AlarmType.RtcWakeup, calendar.TimeInMillis, 1000 * 60 * 60, alarmIntent);

我已获得 WAKE_LOCK 权限。

提前致谢

【问题讨论】:

    标签: android xamarin.android alarmmanager android-permissions android-alarms


    【解决方案1】:

    当应用程序在前台或后台运行时,AlarmManager 可以正常工作。

    但是当应用程序退出/强制停止/杀死时,警报管理器被取消。

    只有用户再次启动应用程序,警报才会再次响起。

    要在应用关闭时保持警报状态,您可能必须使用Foreground service

    这是一个sample,您可以参考。

    【讨论】:

    • 我不太确定 AlarmManager 是这样工作的,因为我看到许多应用程序不使用任何服务并且仍然可以定期运行代码,事实上:当我的应用程序被杀死时 - 它仍然工作几个小时然后停止
    • 检查*.com/questions/30525784/…,也许有帮助。