2011-11-25 48 views
10

我現在正在學習如何在android上創建和使用服務。我看了一下android SDK的進一步幫助,我發現了android:enable = [true |假]android:enable和services

在SDK

說,:

的和屬性都必須是「真」(因爲它們都是由 默認值)啓用該服務。如果其中任一個爲「假」,則該服務被禁用; 它不能被實例化。

所以我想知道什麼是利益/爲什麼(一般)

  • 設置應用程序使「假」。
  • 將服務啓用設置爲「false」。

我說如果我們把服務啓用設置爲false,那麼沒有辦法調用那個服務,那麼我們爲什麼要創建那個服務呢?

非常感謝您對此長信息的抱歉。

回答

16

新的SAF(存儲訪問框架)是使用android:enabled屬性的一個很好的例子。 http://developer.android.com/guide/topics/providers/document-provider.html

機器人:啓用屬性設置爲在 資源文件中定義一個布爾值。此屬性的目的是在運行Android 4.3或更低版本的設備上禁用 提供程序。例如,

android:enabled="@bool/atLeastKitKat" 

除了包括在清單此 屬性,你需要做到以下幾點: 在根據RES /值的bool.xml資源文件/添加此行:

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

在根據RES /值-V19 /你bool.xml資源文件,加入這一行:

<bool name="atLeastKitKat">true</bool> 
+0

好的和有用的例子 – matreshkin

18

設置應用程序啓用爲「false」。

我知道沒有很好的理由這樣做。

我說如果我們把服務啓用設置爲false,那麼沒有辦法調用這個服務,那麼我們爲什麼首先創建這個服務呢?

一般來說,這是事實。 android:enabled實際上是爲所有組件繼承的,所以它不是唯一的服務。下面是它可能使用場景:

  • 活動:你想在發射第二個圖標,但前提是用戶購買的東西通過應用內購買(例如,升級爲「臨「功能)

  • 廣播接收器:你想通過ACTION_BOOT_COMPLETED獲得在啓動時的控制,但你並不需要所有的時間

  • 服務ContentProvider:您有一個應用程序家族,即使您的家人安裝了多個應用程序,您只需要(並且希望)服務/內容提供者的一個實現即可使用

在這些情況下,您可能會在清單中禁用組件(android:enabled="false"),並使用PackageManagersetComponentEnabledSetting()稍後有條件地啓用它們。

相關問題