Андроид: включение и обслуживание
В настоящее время я изучаю, как создавать и использовать службы на 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()
для условного включения их позже.