从我所看到的情况来看,如果你安排一个无限期重复的警报,它将不会停止运行,直到你重启设备或卸载应用程序。
我想知道,在应用更新的情况下,这些行为如何表现?例如,您从Play商店下载该应用程序的版本1,然后运行该应用程序,此警报开始运行。然后发布版本2并执行自动或手动更新。此警报是否仍在继续运行(或者您是否必须再次启动应用程序才能启动警报)?
在我的场景中,我确实需要这样做,所以我希望答案是它会继续运行。但是,如果您在版本2中更改了警报代码,会发生什么?
答案似乎是在大多数Android版本的应用更新后,AlarmManager
警报会继续运行。当然适用于Android 2.2或更高版本。 UninstallReceiver
中的AlarmManagerService
已更新以处理包更新而不会消除警报 - 请参阅here,其中有明确的注释:
//这个包正在更新;不要杀死它的警报。
处理这个问题的代码不在2.1 AlarmManagerService.UninstallReceiver中
我意识到这可能是帮助OP的3年来最好的部分,但希望它可以帮助其他人。
做像this这样的事情。
从本质上讲,如果你的应用程序每次启动时都会使用相同的ID重新运行PendingIntent,如果它正在运行,则不会发生任何事情,如果它没有运行,它将开始运行。
这样您就不必担心更新后丢失警报。