【问题标题】:android:enable and services安卓:启用和服务
【发布时间】:2011-11-25 17:00:42
【问题描述】:
我目前正在学习如何在 android 上创建和使用服务。我查看了 android SDK 以获得进一步的帮助,我发现 android:enable=[true |假]。
在SDK中是这样说的:
和 属性都必须为“真”(因为它们都是
默认)用于启用服务。如果其中一个为“false”,则服务被禁用;
它不能被实例化。
所以我想知道什么是兴趣/为什么(一般而言)
- 将应用程序启用设置为“假”。
- 将服务启用设置为“false”。
我说如果我们将 service enable 设置为 false,则无法调用该服务,那么为什么我们首先创建该服务?
谢谢你,很抱歉这么长的信息。
【问题讨论】:
标签:
android
service
receiver
【解决方案1】:
将应用启用设置为“false”。
我不知道这样做的充分理由。
我说如果我们将服务启用设置为 false,则无法调用该服务,那么为什么我们首先要创建该服务?
一般来说,这是真的。 android:enabled 实际上是为所有组件继承的,因此它不是服务独有的。以下是可能使用它的场景:
活动:您希望在启动器中有第二个图标,但前提是用户通过应用内购买购买了某些东西(例如,升级到“专业版”功能)
BroadcastReceiver:您希望在启动时通过ACTION_BOOT_COMPLETED 获得控制权,但您不需要一直这样做
Service 和 ContentProvider:您有一系列应用程序,您只需要(并且希望)有一个服务/内容提供程序的实现,即使用户安装了您家庭中的多个应用
在这些情况下,您可能在清单中禁用了组件 (android:enabled="false"),并使用 PackageManager 和 setComponentEnabledSetting() 稍后有条件地启用它们。
【解决方案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>