首页 > 解决方案 > android:persistent 与 Service.START_STICKY 有什么区别?

问题描述

这个博客清楚地解释了两者之间的区别

现在读完这篇文章后,当我看到这个带有 AndroidManifest.xml 的服务声明时,我感到很困惑

<service android:name="com.amazon.tablet.myapplication.MyService" android:persistent="true"></service>

到目前为止,我假设/理解,进行android:persistent=true服务声明会将服务变为持久性并在它出现故障时重新启动。但我无需独自一人persistent=true就能做到这一点。Service.START_STICKY

  1. android:persistent=true与这些属性有什么区别Service.START_STICKYService.START_REDELIVER_INTENT
  2. 重新创建服务后,应用程序是否会再次重新启动?我试图了解在重新创建服务时是否会创建应用程序的过程。

    注意:我用属性声明了服务android:persistent=true并尝试用它杀死我的应用程序,adb shell kill <pid>但它被重新创建了。我想知道/不理解在这种情况下进行服务娱乐与应用程序娱乐之间的区别。

标签: androidserviceandroid-servicepersistence

解决方案


1. 服务.START_STICKY

这将等待启动服务的意图(一旦与此相关的进程被杀死)

2. android:persistent="true"

这将使服务相应地保持为真/假,并且这不会等待意图再次建立服务(一旦由于 LMK 和所有原因而被杀死)

3. 服务与应用持久化

通过使服务持久化,这将使与之关联的进程持久化。与应用程序相同的情况。

当您为您的服务声明一个单独的进程时,您的应用程序将不会持久化。


推荐阅读