- 構文:
<service android:description="string resource" android:directBootAware=["true" | "false"] android:enabled=["true" | "false"] android:exported=["true" | "false"] android:foregroundServiceType=["connectedDevice" | "dataSync" | "location" | "mediaPlayback" | "mediaProjection" | "phoneCall"] android:icon="drawable resource" android:isolatedProcess=["true" | "false"] android:label="string resource" android:name="string" android:permission="string" android:process="string" > . . . </service>
- 含まれているファイル:
<application>
- 含めることのできる要素:
<intent-filter>
<meta-data>
- 説明:
- サービス(
Service
サブクラス)をアプリのコンポーネントの 1 つとして宣言します。アクティビティと異なり、サービスには視覚的ユーザー インターフェースがありません。サービスは、長時間にわたるバックグラウンド オペレーションか、他のアプリから呼び出せるリッチ コミュニケーション API を実装するために使用されます。すべてのサービスは、マニフェスト ファイルの
<service>
要素で表現する必要があります。宣言しなければ、システムによって認識されず、実行されません。 - 属性:
android:description
- ユーザーに対してサービスを説明する文字列。ラベルは、ユーザー インターフェースの他の文字列と同様にローカライズできるように、文字列リソースへの参照として設定する必要があります。
android:directBootAware
サービスがダイレクト ブート対応であるかどうか。つまり、ユーザーがデバイスをロック解除する前に、サービスを実行できるかどうかを示します。
注:ダイレクト ブート中にアプリのサービスがアクセスできるのは、デバイス保護ストレージに保存されているデータのみです。
デフォルト値は
"false"
です。android:enabled
- システムがサービスをインスタンス化できるか。インスタンス化できる場合は "
true
"、できない場合は "false
" です。デフォルト値は "true
" です。<application>
要素には、サービスを含むすべてのアプリ コンポーネントに適用される固有のenabled
属性があります。サービスを有効化するには、<application>
属性と<service>
属性の両方を "true
"(どちらの属性でもこれがデフォルト値です)にする必要があります。いずれかが "false
" の場合、サービスは無効になり、インスタンス化できません。 android:exported
- 他のアプリのコンポーネントがサービスを呼び出したりサービスとやり取りしたりできるか。できる場合は "
true
"、できない場合は "false
" です。この値が "false
" の場合、同じアプリのコンポーネントまたは同じユーザー ID を持つアプリのみがサービスを開始またはバインドできます。デフォルト値は、サービスにインテント フィルタが含まれているかどうかによって異なります。フィルタがない場合、正確なクラス名を指定しなければサービスを呼び出せません。これは、サービスの使用をアプリ内に限定する意図があることを意味します。他のアプリがクラス名を知ることはないからです。したがって、この場合のデフォルト値は "
false
" です。一方、少なくとも 1 つのフィルタが存在する場合、サービスの外部使用が意図されていることを意味します。したがって、この場合のデフォルト値は "true
" です。この属性は、他のアプリへのサービスの公開を制限する唯一の方法ではありません。権限を使用して、サービスとやり取りできる外部エンティティを制限することもできます(
permission
属性をご覧ください)。 android:foregroundServiceType
サービスが特定のユースケースに対応するフォアグラウンド サービスであることを指定します。たとえば、フォアグラウンド サービス タイプが
"location"
の場合、通常はデバイスの位置情報に関連したユーザー開始アクションを続行するために、アプリがデバイスの現在の位置情報を取得することを示します。特定のサービスに複数のフォアグラウンド サービス タイプを割り当てることができます。
android:icon
- サービスを表すアイコン。この属性は、画像の定義を含むドローアブル リソースへの参照として設定する必要があります。この属性が設定されていない場合、アプリ全体に指定されたアイコンが代わりに使用されます(
<application>
要素のicon
属性をご覧ください)。また、サービスのアイコン(ここで設定するか、または
<application>
要素で設定)は、すべてのサービスのインテント フィルタを表すデフォルトのアイコンにもなります(<intent-filter>
要素のicon
属性をご覧ください)。 android:isolatedProcess
- true に設定した場合、このサービスは、システムの他の部分から分離された、固有の権限を持たない特別なプロセスの下で実行されます。そのようなサービスとの通信は、Service API を介してのみ行われます(バインドおよび開始)。
android:label
- ユーザーに表示できるサービスの名前。この属性が設定されていない場合、アプリ全体に設定されたラベルが代わりに使用されます(
<application>
要素のlabel
属性をご覧ください)。また、サービスのラベル(ここで設定するか、または
<application>
要素で設定)は、すべてのサービスのインテント フィルタを表すデフォルトのラベルにもなります(<intent-filter>
要素のlabel
属性をご覧ください)。ラベルは、ユーザー インターフェースの他の文字列と同様にローカライズできるように、文字列リソースへの参照として設定する必要があります。ただし、アプリの開発中は、利便性を考慮して、未加工の文字列として設定することもできます。
android:name
- サービスを実装する
Service
サブクラスの名前。完全修飾クラス名("com.example.project.RoomService
" など)を指定する必要があります。ただし、簡便な方法として、名前の最初の文字をピリオドにすると(たとえば、".RoomService
")、<manifest>
要素で指定されたパッケージ名の後にその名前が付加されます。アプリを公開した後でこの名前を変更してはなりません(ただし、
android:exported="false"
を設定した場合を除きます)。デフォルト値はありません。名前の指定は必須です。
android:permission
- エンティティがサービスを起動またはバインドするために必要とする権限の名前。
、startService()
、またはbindService()
の呼び出し元にこの権限が付与されていないと、メソッドは動作せず、Intent オブジェクトはサービスに配信されません。stopService()
この属性が設定されていない場合、
<application>
要素のpermission
属性によって設定された権限がサービスに適用されます。どちらの属性も設定されていない場合、サービスは権限で保護されません。権限の詳細については、このドキュメントの概要ページの権限セクションか、別のドキュメントのセキュリティと権限をご覧ください。
android:process
- サービスが実行されるプロセスの名前。通常、アプリのすべてのコンポーネントは、そのアプリ用に作成されたデフォルト プロセスで実行されます。プロセスの名前はアプリ パッケージと同じです。
<application>
要素のprocess
属性で、すべてのコンポーネントに別のデフォルト値を設定できます。ただし、コンポーネントは固有のprocess
属性でデフォルト値をオーバーライドできるため、それによりアプリを複数のプロセスに分散させることができます。この属性に割り当てられた名前がコロン(:)で始まる場合、必要に応じてアプリ専用の新しいプロセスが作成され、そのプロセス内でサービスが実行されます。プロセス名が小文字で始まる場合、サービスはその名前のグローバル プロセス内で実行されます(そのための権限がある場合)。これにより、さまざまなアプリのコンポーネントがプロセスを共有できるため、リソースの使用量を削減できます。
- 関連ドキュメント:
<application>
<activity>
- 導入レベル:
- API レベル 1
Content and code samples on this page are subject to the licenses described in the Content License. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2020-11-19 UTC.