10

据我所知,如果您安排一个无限重复的警报,它不会停止运行,直到您重新启动设备或卸载应用程序。

我想知道,在应用程序更新的情况下这些行为如何?例如,您从 Play 商店下载应用程序的第 1 版,然后运行应用程序,此警报开始运行。然后发布第二版并执行自动或手动更新。此警报是否仍在运行(或者您必须再次启动应用程序才能启动警报)?

在我的场景中,我确实需要它这样做,所以我希望答案是它会继续运行。但是,如果您在版本 2 中更改了警报代码,会发生什么情况?

4

2 回答 2

15

答案似乎是,在AlarmManager大多数 Android 版本的应用程序更新后,警报确实会继续运行。当然适用于 Android 2.2 或更高版本。已更新UninstallReceiverinAlarmManagerService以处理包更新而不会终止警报 - 请参阅此处有明确评论的地方:

// 这个包正在更新中;不要杀死它的警报。

处理此问题的代码不在 2.1 AlarmManagerService.UninstallReceiver

我意识到这可能是 3 年来最好的部分,无法帮助 OP,但希望它可以帮助其他人。

于 2017-02-01T16:44:53.833 回答
1

Do something like this.

Essentially, if every time your app starts you re-run your PendingIntent with the same ID, if it was running nothing will happen and if it wasn't running it will start running.

This way you don't have to worry about losing your alarm after an update.

于 2014-07-19T21:35:35.633 回答