当Android应用程序更新时,后台服务会发生什么?

6
假设我启动了一个在第一次应用程序启动和开机时启动的重复后台服务。如果我提供应用程序更新,会发生什么?该后台服务会被终止吗? 用户是否需要再次打开应用程序以重新注册后台服务,还是应用程序将在更新时获得某些回调? Edit-1:如其中一个答案建议的那样,如果应用程序必须重新启动才能启动服务,那么闹钟应用程序如何在不重新启动的情况下正常工作(我相信它使用后台服务来启动闹钟)?
2个回答

7

这个后台服务会被杀掉吗?

会被杀掉。

用户需要再次打开应用程序来重新注册后台服务,还是应用程序会在更新时得到一些回调?

这取决于情况。基本上,由于应用程序在更新后不会自动重新启动,因此需要用户活动。但是,如果您针对API 12或更高版本(现在您应该这样做),则可以尝试使用ACTION_MY_PACKAGE_REPLACED广播。根据文档:

广播操作:已安装新版本的应用程序覆盖了现有的应用程序。这只发送给被替换的应用程序。它不包含任何其他数据;要接收它,只需为此操作使用意图过滤器。

因此,您可以在BroadcastReceiver中触发一些操作,一旦接收到此广播,就可以执行您的操作。


抱歉问一个简单的问题,但是在更新后如何在没有任何用户活动的情况下启动闹钟应用程序? - kamalkishor1991

1

该服务将被终止并需要重新启动。

一个服务不在单独的进程中运行。除非另有规定,否则服务对象本身并不意味着它在自己的进程中运行;它与应用程序一起运行在同一进程中。

因此,当应用程序更新时,应用程序将被发送到停止状态。

你可以测试一下。 从 Google Play 商店开始更新应用程序(其中包含一个服务,例如 WhatsApp)。 打开应用程序并等待其完成。它会停止运行。您可以检查内部正在运行的进程。连接手机到 DDMS。检查进程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接