如果用户已启用"自动更新"我会随时在Market中发布我的应用的新版本选项,应用程序将自动更新。
该应用包含一项不断运行的服务。但是当自动更新发生时,旧的正在运行的应用程序被终止,但新的应用程序未启动。 由于更新主要是透明地发生在用户身上,因此应该在更新后自动重新启动应用程序的服务,以便几乎不会中断服务。
使用市场上的真实更新对此进行测试有点困难,因此我使用以下两个adb命令来模拟此更新过程。 安装第一版:
adb install oldversion.apk
自动更新:
adb install -r newversion.apk
运行第二个命令后,应用程序成功更新,但已停止并且未重新启动。
如何让新版本的服务自动启动?
答案 0 :(得分:7)
如果您的应用在API 12
或更高版本上投放,我建议您注册BroadcastReceiver
收听android.intent.action.MY_PACKAGE_REPLACED
。
仅当您的应用程序获得更新时才会触发此Intent。
答案 1 :(得分:4)
这是您必须仔细测试的内容,但您应该能够通过行动Intent.ACTION_PACKAGED_REPLACED
的广播接收器来捕捉它然后从接收器开始服务。
答案 2 :(得分:1)
将BroadcastReceiver
注册到Intent.ACTION_PACKAGE_REPLACED
然后,将EXTRA_UID
与您自己进行比较。如果匹配,您可以再次开始服务。