假设我开始在第一个应用程序启动和启动时声明的重复后台服务。当我提供应用程序更新时会发生什么。该背景服务会被杀死吗? 用户是否必须再次打开应用程序以再次注册后台服务,否则应用程序将在更新时获得一些回调?
Edit-1 :作为答案之一,如果应用程序必须重新启动以启动服务,那么警报应用程序在更新后如何正常工作而不重新启动(我相信它使用后台服务)开始报警)?
答案 0 :(得分:5)
该后台服务会被杀死吗?
它会被杀死。
用户是否必须再次打开应用程序以再次注册后台服务,否则应用程序将在更新时获得一些回调?
这取决于。基本上它需要用户活动,因为更新后应用程序不会自动重新启动。但是,如果您的目标是API 12或更高版本(现在应该是这样),您可以尝试使用ACTION_MY_PACKAGE_REPLACED广播。根据文件:
广播操作:已在现有版本上安装新版本的应用程序。这只发送给应用程序 被取代了。它不包含任何其他数据;受到 它,只需使用一个意图过滤器来执行此操作。
所以,一旦收到此广播,你就可以在BroadcastReceiver
触发某些东西。
答案 1 :(得分:1)
该服务将被终止,需要重新开始。
服务不会在单独的进程上运行。 Service对象本身并不意味着它在自己的进程中运行;除非另有说明,否则它与其所属的应用程序运行的过程相同。
因此,当应用程序更新时,应用程序将被发送到已停止状态。
你可以测试一下。 从谷歌游戏商店发起应用程序的更新(其中有一个服务E.g Whatsapp)。 打开应用程序并等待它完成。它停止了。您可以检查内部运行进程。将手机连接到DDMS。检查流程。