Android: включить и услуги - PullRequest
13 голосов
/ 25 ноября 2011

В настоящее время я учусь создавать и использовать сервисы на Android. Я посмотрел на Android SDK для получения дополнительной помощи, и я нашел Android: enable = [true | ложь] .

в SDK сказано, что:

Атрибуты и должны оба быть "истинными" (так как они оба по умолчанию) для службы, которая будет включена. Если любой из них «ложь», служба отключена; это не может быть создано.

Итак, я хотел бы знать, в чем состоит интерес / почему (в целом)

  • установка приложения включается как «ложь».
  • установка включения службы как «ложь».

Я говорю, что если мы ставим службу enable как false, то нет способа вызвать эту службу, так почему же мы сначала создаем эту службу?

Спасибо и простите за такое длинное сообщение.

Ответы [ 2 ]

26 голосов
/ 25 ноября 2011

установка приложения включает «ложь».

Я не знаю веских причин для этого.

Я говорю, что если мы поставим сервисвключить как ложное, нет способа вызвать эту службу, так почему мы создаем эту службу в первую очередь?

В общем, это правда.android:enabled, по сути, наследуется для всех компонентов, поэтому он не уникален для сервисов.Вот сценарии, где он может быть использован:

  • Активность : вы хотите иметь второй значок в панели запуска, но только если пользователь покупает что-то черезпокупка приложения (например, обновление до «Pro»)

  • BroadcastReceiver : вы хотите получить контроль во время загрузки через ACTION_BOOT_COMPLETED, но вам это не нужночто все время

  • Сервис и ContentProvider : у вас есть семейство приложений, где вам нужна (и вам нужна) только одна реализацияпоставщика услуг / контента, даже если пользователь установил более одного приложения из вашей семьи

В этих случаях может быть отключен компонент (android:enabled="false") в манифесте и используйте PackageManager и setComponentEnabledSetting() для их последующего условного включения.

21 голосов
/ 10 января 2014

Новый 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" 

В дополнение к включению этого атрибута в манифест, вам нужно сделать следующее: В файле ресурсов bool.xml в разделе res / values ​​/ добавьте этострока:

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

В файле ресурсов bool.xml в разделе res / values-v19 / добавьте эту строку:

<bool name="atLeastKitKat">true</bool>
...