9

每当我在市场中发布我的应用程序的新版本时,如果用户启用了“自动更新”选项,应用程序将自动更新。

该应用程序包含一个不断运行的服务。但是当自动更新发生时,旧的正在运行的应用程序被杀死,但新的应用程序没有启动。由于更新对用户来说主要是透明的,因此应用程序的服务应该在更新后自动重新启动,这样服务几乎不会中断。

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

adb install oldversion.apk

自动更新:

adb install -r newversion.apk

运行第二个命令后,应用程序成功更新,但它已停止且未重新启动。

如何让新版本的服务自动启动?

4

3 回答 3

8

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

仅当您的应用程序获得更新时才会触发此 Intent。

于 2014-06-18T15:57:16.300 回答
5

这是您必须仔细测试的东西,但是您应该能够使用带有操作Intent.ACTION_PACKAGED_REPLACED的广播接收器来捕获它

然后你从你的接收器启动服务。

于 2013-03-22T14:13:39.853 回答
1

注册一个BroadcastReceiverIntent.ACTION_PACKAGE_REPLACED

然后,EXTRA_UID与自己的比较。如果匹配,您可以重新启动服务。

于 2013-03-22T14:16:49.017 回答