【问题标题】:android:enable and services安卓:启用和服务
【发布时间】:2011-11-25 17:00:42
【问题描述】:

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

在SDK中是这样说的:

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

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

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

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

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

【问题讨论】:

  • @rds 我刚刚就这个问题和接受的答案提出了meta question

标签: android service receiver


【解决方案1】:

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

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

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

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

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

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

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

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

【讨论】:

    【解决方案2】:

    New SAF(Storage Access Framework) 是使用 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>
    

    【讨论】:

    • 好有用的例子
    • another question 中,他们也使用这个技巧来为 Gradle 提供构建时选项
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多