android:persistent与Service.START_STICKY有什么区别?

时间:2019-04-01 18:31:04

标签: android service android-service persistence

blog清楚地说明了

之间的区别
  • 服务。START_STICKY
  • 服务。START_NOT_STICKY
  • 服务。START_REDELIVER_INTENT

现在,阅读本文后,我在使用AndroidManifest.xml看到此服务声明时感到困惑

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

到目前为止,我假设/理解了在服务声明中使用android:persistent=true会使服务变为持久性并在服务关闭时重新启动。但是我可以不用单独使用persistent=trueService.START_STICKY来实现这一目标。

  1. android:persistent=true与这些属性Service.START_STICKYService.START_REDELIVER_INTENT有什么区别?
  2. 重新创建服务后,将重新启动该应用程序吗?我试图了解重新创建服务时将为应用程序创建流程。

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

1 个答案:

答案 0 :(得分:2)

1。服务。START_STICKY

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

2。 android:persistent =“ true”

这将相应地使该服务为永久性true / false,并且这不会等待再次构建该服务的意图(一旦由于LMK等原因而被杀死)

3。服务与应用的持久性

通过使服务持久化,这将使与之关联的进程成为持久性。和应用程序一样。

当您为服务声明一个单独的进程时,您的应用将不会持续存在。