17

我目前正在学习如何在 android 上创建和使用服务。我查看了 android SDK 以获得进一步的帮助,我发现了android:enable=[true | 假]

SDK中是这样说的:

和 属性必须都为“true”(默认情况下它们都是)才能启用服务。如果其中一个为“false”,则服务被禁用;它不能被实例化。

所以我想知道什么是兴趣/为什么(一般来说)

  • 将应用程序启用设置为“false”。
  • 将服务启用设置为“false”。

我说如果我们将 service enable 设置为 false 就无法调用该服务,那么为什么我们首先要创建该服务呢?

谢谢你,很抱歉这么长的信息。

4

2 回答 2

30

将应用程序启用设置为“false”。

我不知道这样做的充分理由。

我说如果我们将 service enable 设置为 false 就无法调用该服务,那么为什么我们首先要创建该服务呢?

一般来说,这是真的。android:enabled实际上,对于所有组件都是继承的,因此它不是服务独有的。以下是可能使用它的场景:

  • 活动:您希望在启动器中有第二个图标,但前提是用户通过应用内购买购买了一些东西(例如,升级到“Pro”功能)

  • BroadcastReceiver:您希望在启动时通过 获得控制权ACTION_BOOT_COMPLETED,但您不需要一直这样做

  • 服务和内容提供:您有一系列应用程序,您只需要(并且希望)有一个服务/内容提供者的实现,即使用户安装了您的家庭中的多个应用程序

在这些情况下,您可能会android:enabled="false"在清单中禁用组件 ( ),然后使用PackageManagersetComponentEnabledSetting()有条件地启用它们。

于 2011-11-25T17:34:23.810 回答
25

新的 SAF(存储访问框架)是使用 android:enabled 属性的一个很好的例子。 http://developer.android.com/guide/topics/providers/document-provider.html

android:enabled属性设置为资源文件中定义的布尔值。此属性的目的是在运行 Android 4.3 或更低版本的设备上禁用提供程序。例如,

android:enabled="@bool/atLeastKitKat" 

除了在清单中包含此属性外,您还需要执行以下操作: 在 res/values/ 下的 bool.xml 资源文件中,添加以下行:

<bool name="atLeastKitKat">false</bool> 

在 res/values-v19/ 下的 bool.xml 资源文件中,添加以下行:

<bool name="atLeastKitKat">true</bool>
于 2014-01-10T09:07:13.823 回答