2010-01-27 97 views
4

我通过AlarmManager设置了一些警报来执行一些周期性作业。 我在每次boot_complete事件中第一次打开应用程序&时设置/重置它们。 但是,当通过ADB重新安装应用程序时,我的闹钟不再闪光。看起来像操作系统删除重新安装应用程序的报警。我假设如果用户也从市场上更新应用程序,就会发生这种情况。更新/重新安装应用程序时执行代码

如果在我的应用程序重新安装/升级等情况下,我可以收到广播或某种回叫,我可以重新设置闹钟。但我不知道这是可能的还是如何? 有人可以帮我一把。

回答

5

是的,这是可能的。

您可以创建监听任何PACKAGE_*事件系统发送一个广播接收器,但您将不会收到他们自己的应用程序除非你的应用程序正在升级—你会得到PACKAGE_REMOVED不久之后PACKAGE_REPLACED

+0

谢谢,我会尽力处理这些事件,看看它是否适合我。但我仍然不同意这种默认行为。为什么当升级/重新安装应用程序时,像prefs&sqlite db这样的其他数据得到维护(即使有数据库升级的机会),警报也会被移除。这只会增加程序员不必要的开销。 – Rahul 2010-01-28 16:31:44

+0

数据库升级不会在应用程序升级时发生。无论如何,你可以在Android项目上提出一个错误,让他们知道你认为在更换包装时应该保留警报。我无法立即想到任何明显的原因,因为即使升级后无法解决报警中的PendingIntent,系统也可能忽略它。 – 2010-01-28 17:14:01

+1

我有完全相同的问题。当替换通过市场(或某种其他机制)发生时,PACKAGE_REPLACED意图可能会触发,但AFAICS在替换通过ADB发生时不会触发;我看到PACKAGE_REMOVED和PACKAGE_ADDED事件,两者都不能被包自己捕获(根据文档)。 – sosiouxme 2010-12-19 17:17:37

相关问题