Андроид: включение и обслуживание

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

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

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

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

  • настройка приложения позволяет использовать "false" .
  • установка разрешения службы как "false" .

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

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

Ответ 1

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

Ответ 2

настройка приложения позволяет использовать "false".

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

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

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

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

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

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

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