Android的AlarmManager在应用更新后是否会继续运行?

12

据我所见,如果你设置了一个无限重复的闹钟,直到你重新启动设备或卸载应用程序之前,它都不会停止运行。

我想知道,在应用程序更新的情况下,这些闹钟是如何运作的?例如,你从Play Store下载了应用程序的版本1,并运行该应用程序,此时闹钟开始运行。然后发布了第二个版本并执行自动或手动更新。这个闹钟是否仍然继续运行(或者必须再次启动应用程序才能启动闹钟)?

在我的场景中,我需要它这样做,所以我希望答案是它将继续运行。然而,如果你在第二版中更改了闹钟代码,那会发生什么呢?


我注意到的一个奇怪的事情是,在开发过程中,如果通过Android Studio运行应用程序重新安装应用程序,之前预定的闹钟会消失。然而,如果您使用adb来安装由Android Studio生成的APK文件,闹钟不会消失。 - Caleb Koch
我注意到的一件奇怪的事情是,在开发过程中,如果通过Android Studio运行应用程序重新安装应用程序,之前预定的闹钟会消失。然而,如果您使用adb安装由Android Studio生成的APK文件,闹钟不会消失。 - undefined
2个回答

19
答案似乎是对于大多数版本的Android,AlarmManager警报在应用更新后仍然保持运行。至少对于Android 2.2或以上版本如此。 AlarmManagerService中的UninstallReceiver已经更新以处理包更新而不会杀死警报-参见这里有明确的注释:

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

处理这个问题的代码在2.1版的AlarmManagerService.UninstallReceiver中并没有。

我知道这可能迟了将近3年才来帮助提问者,但希望能对其他人有所帮助。


1

像这样做this

实际上,如果每次您的应用程序启动时都使用相同的ID重新运行PendingIntent,如果它正在运行,则不会发生任何事情,如果它没有运行,则会开始运行。

这样,您就不必担心在更新后丢失警报。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接