市场更新后自动重新启动应用程序
无论何时我在Market上发布我的应用程序的新版本,如果用户启用了“自动更新”选项,该应用程序将自动更新。市场更新后自动重新启动应用程序
该应用程序包含一个不断运行的服务。但是当自动更新发生时,旧的正在运行的应用程序被终止,但新的未启动。 由于更新大多对用户透明,因此应该在更新后自动重新启动应用程序的服务,这样就几乎不会中断服务。
用真正的市场更新测试这个有点困难,所以我使用以下两个adb命令来模拟这个更新过程。 安装的第一个版本:
adb install oldversion.apk
自动更新:
adb install -r newversion.apk
我跑第二个命令后,应用程序被成功更新,但它已被停止并不会重新启动。
我们如何才能使新版本的服务自动启动?
这件事情,你就必须仔细测试,但你应该能够用行动Intent.ACTION_PACKAGED_REPLACED
然后你从你的接收器启动该服务具有广播接收器抓住它。
我试图但不工作...我尝试http://pastie.org/ 8223893你能提出建议吗? – 2013-08-10 07:19:50
我觉得使用ACTION_MY_PACKAGE_REPLACED会更好?因为它只是被发送到正在更新的软件包,而不是所有软件包。 – code2be 2016-01-27 05:16:57
注册一个BroadcastReceiver
到Intent.ACTION_PACKAGE_REPLACED
然后,用自己的比较EXTRA_UID
。如果匹配,则可以重新开始服务。
如果您的应用程序在API 12
或更高版本上运行,那么我会建议您注册一个BroadcastReceiver
,听android.intent.action.MY_PACKAGE_REPLACED
。
只有当您的应用程序得到更新时,才会触发此意向。
http://stackoverflow.com/questions/10728016/android-restart-application-after-update-action-package-replaced – Alexis 2013-10-10 00:25:40