2013-03-22 184 views
8

无论何时我在Market上发布我的应用程序的新版本,如果用户启用了“自动更新”选项,该应用程序将自动更新。市场更新后自动重新启动应用程序

该应用程序包含一个不断运行的服务。但是当自动更新发生时,旧的正在运行的应用程序被终止,但新的未启动。 由于更新大多对用户透明,因此应该在更新后自动重新启动应用程序的服务,这样就几乎不会中断服务。

用真正的市场更新测试这个有点困难,所以我使用以下两个adb命令来模拟这个更新过程。 安装的第一个版本:

adb install oldversion.apk 

自动更新:

adb install -r newversion.apk 

我跑第二个命令后,应用程序被成功更新,但它已被停止并不会重新启动。

我们如何才能使新版本的服务自动启动?

+1

http://stackoverflow.com/questions/10728016/android-restart-application-after-update-action-package-replaced – Alexis 2013-10-10 00:25:40

回答

4

这件事情,你就必须仔细测试,但你应该能够用行动Intent.ACTION_PACKAGED_REPLACED

然后你从你的接收器启动该服务具有广播接收器抓住它。

+0

我试图但不工作...我尝试http://pastie.org/ 8223893你能提出建议吗? – 2013-08-10 07:19:50

+0

我觉得使用ACTION_MY_PACKAGE_REPLACED会更好?因为它只是被发送到正在更新的软件包,而不是所有软件包。 – code2be 2016-01-27 05:16:57

1

注册一个BroadcastReceiverIntent.ACTION_PACKAGE_REPLACED

然后,用自己的比较EXTRA_UID。如果匹配,则可以重新开始服务。

7

如果您的应用程序在API 12或更高版本上运行,那么我会建议您注册一个BroadcastReceiver,听android.intent.action.MY_PACKAGE_REPLACED

只有当您的应用程序得到更新时,才会触发此意向。

相关问题