17

私は現在、Androidでサービスを作成して使用する方法を学んでいます。さらにヘルプを得るために Android SDK を調べたところ、android:enable=[true | true | trueが見つかりました。偽] .

SDK では、次のように述べられています。

サービスを有効にするには、 属性と 属性が両方とも「true」である必要があります (デフォルトでは両方とも)。どちらかが「false」の場合、サービスは無効になります。インスタンス化することはできません。

だから私は何が興味があるのか​​/理由を知りたいです(一般的に)

  • アプリケーションの有効化を「false」に設定します。
  • サービスの有効化を「false」に設定します。

service enable を false に設定すると、そのサービスを呼び出す方法がないと言いますが、そもそもなぜそのサービスを作成するのでしょうか?

ありがとうございます。長いメッセージで申し訳ありません。

4

2 に答える 2

30

アプリケーションの有効化を「false」に設定します。

私はこれを行う正当な理由がないことを知っています。

service enable を false に設定すると、そのサービスを呼び出す方法がないと言いますが、そもそもなぜそのサービスを作成するのでしょうか?

一般的に、それは本当です。android:enabled事実上、すべてのコンポーネントに継承されるため、サービスに固有のものではありません。これが使用される可能性のあるシナリオは次のとおりです。

  • アクティビティ: ランチャーに 2 番目のアイコンを表示したいが、ユーザーがアプリ内購入で何かを購入した場合 (「プロ」機能へのアップグレードなど) に限る

  • BroadcastReceiver : を介して起動時に制御を取得したいACTION_BOOT_COMPLETEDが、常に必要というわけではない

  • ServiceContentProvider : アプリのファミリがあり、ユーザーがファミリの複数のアプリをインストールした場合でも、サービス/コンテンツ プロバイダの 1 つの実装のみが必要 (かつ必要) です。

このような場合、android:enabled="false"マニフェストでコンポーネントを無効 ( ) にし、 と を使用PackageManagersetComponentEnabledSetting()て、後で条件付きで有効にすることができます。

于 2011-11-25T17:34:23.810 に答える
25

新しい 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> 

res/values-v19/ の下の bool.xml リソース ファイルに、次の行を追加します。

<bool name="atLeastKitKat">true</bool>
于 2014-01-10T09:07:13.823 に答える