我正在编写一个带有服务组件的应用程序。就其本质而言,这项服务将在后台运行。
在任何时候,Google Play都可能会更新我的应用。即下载并安装到设备上的新APK。当我使用Eclipse ADT执行此过程时,服务将停止运行我已上载新版本的服务。
从Play商店更新应用时会发生什么?它有类似的东西吗?如果是这样,我怎样才能自动重启服务而无需让用户进行干预?
谢谢
答案 0 :(得分:2)
当您的应用程序更新时,系统会发送两个广播:ACTION_MY_PACKAGE_REPLACED(仅发送到您的应用程序,可在API 12(3.1)或更高版本中使用)和ACTION_PACKAGE_REPLACED(发送到每个应用程序,检查Intent上的getData()
以获取所有API级别的包名称。
您可以在BroadcastReceiver
中创建一个AndroidManifest.xml
来监听广播并启动您的服务。
我强烈建议禁用任何在Android 3.1+设备上监听ACTION_PACKAGE_REPLACED
广播的接收方,否则您的接收方/进程也会在其他应用上被触发(在这种情况下,您可以想要两个接收器:一个用于< 3.1,一个用于> = 3.1并使用android:enabled
和布尔资源根据API级别适当地禁用它们。