Android AlarmManagers 会在应用更新后继续运行吗?

Posted

技术标签:

【中文标题】Android AlarmManagers 会在应用更新后继续运行吗?【英文标题】:Do Android AlarmManagers continue to run after an app update? 【发布时间】:2014-08-22 15:38:05 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

答案似乎是,在大多数 android 版本的应用更新后,AlarmManager 警报确实会继续运行。当然适用于 Android 2.2 或更高版本。 AlarmManagerService 中的 UninstallReceiver 已更新,可以在不终止警报的情况下处理包更新 - 请参阅 here,其中有明确的评论:

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

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

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

【讨论】:

【参考方案2】:

执行this 之类的操作。

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

这样您就不必担心更新后闹钟会丢失。

【讨论】:

以上是关于Android AlarmManagers 会在应用更新后继续运行吗?的主要内容,如果未能解决你的问题,请参考以下文章

Android WebView 防止页面重新加载

Android - 如何保存其他应用程序可以读取的文件?

华为手机android系统怎么打开

如何在 Android 应用中部署自定义图像处理算法?

在应使用条件的上下文(在 'where' 附近)中指定了非布尔类型的表达式。 关键字 'order' 附近有语法错误。

如何以编程方式将 Activity 的背景颜色设置为白色?