语法
1 2 3 4 5 6 7 8 9 10 |
<span style="color: #0000ff;"><span class="tag"><service</span> <span style="color: #800080;"><span class="atn">android:</span><a style="color: #800080;" href="http://developer.android.com/guide/topics/manifest/service-element.html#enabled"><span class="atn">enabled</span></a><span class="pun">=</span><span style="color: #993300;"><span class="atv"><span style="color: #000000;">[</span>"true"</span><span class="pln" style="color: #000000;"> | </span><span class="atv">"false"</span></span><span class="pln"><span style="color: #000000;">]</span> </span><span class="atn">android:</span><a style="color: #800080;" href="http://developer.android.com/guide/topics/manifest/service-element.html#exported"><span class="atn">exported</span></a><span class="pun">=</span><span style="color: #993300;"><span class="atv"><span style="color: #000000;">[</span>"true"</span><span class="pln" style="color: #000000;"> | </span><span class="atv">"false"</span></span><span class="pln"><span style="color: #000000;">]</span> </span><span class="atn">android:</span><a style="color: #800080;" href="http://developer.android.com/guide/topics/manifest/service-element.html#icon"><span class="atn">icon</span></a><span class="pun">=</span><span style="color: #993300;"><span class="atv">"</span><i><span class="atv">drawable resource</span></i><span class="atv">"</span></span><span class="pln"> </span><span class="atn">android:</span><a style="color: #800080;" href="http://developer.android.com/guide/topics/manifest/service-element.html#isolated"><span class="atn">isolatedProcess</span></a><span class="pun">=</span><span class="atv"><span style="color: #000000;">[</span><span style="color: #993300;">"true"</span></span><span class="pln" style="color: #000000;"> | </span><span class="atv" style="color: #993300;">"false"</span><span class="pln"><span style="color: #000000;">]</span> </span><span class="atn">android:</span><a style="color: #800080;" href="http://developer.android.com/guide/topics/manifest/service-element.html#label"><span class="atn">label</span></a><span class="pun">=</span><span style="color: #993300;"><span class="atv">"</span><i><span class="atv">string resource</span></i><span class="atv">"</span></span><span class="pln"> </span><span class="atn">android:</span><a style="color: #800080;" href="http://developer.android.com/guide/topics/manifest/service-element.html#nm"><span class="atn">name</span></a><span class="pun">=</span><span style="color: #993300;"><span class="atv">"</span><i><span class="atv">string</span></i><span class="atv">"</span></span><span class="pln"> </span><span class="atn">android:</span><a style="color: #800080;" href="http://developer.android.com/guide/topics/manifest/service-element.html#prmsn"><span class="atn">permission</span></a><span class="pun">=</span><span style="color: #993300;"><span class="atv">"</span><i><span class="atv">string</span></i><span class="atv">"</span></span><span class="pln"> </span><span class="atn">android:</span><a style="color: #800080;" href="http://developer.android.com/guide/topics/manifest/service-element.html#proc"><span class="atn">process</span></a><span class="pun">=</span><span style="color: #993300;"><span class="atv">"</span><i><span class="atv">string</span></i><span class="atv">"</span></span></span> <span class="tag">></span><span class="pln"> . . . </span><span class="tag"></service></span></span> |
包含于
<application>
可包含
<intent-filter>
<meta-data>
描述
将一个服务(Service 的子类)声明为某个应用程序的组件。与活动不同,服务没有用户界面。它用于处理长时间的后台操作,或实现可被其他应用程序调用的富交互 API。
属性
android:enabled
该服务是否能被系统实例化。“true”表示可以,“false”表示不可。默认值为“true”。
<application> 元素也具有 enabled 属性。这一属性作用于包括服务在内的该应用程序所包含的所有组件。如果要使用某个服务,<application> 与 <service> 的 enabled 属性必须同时为“true”。如果其中有一方为“false”,该服务就将被禁用,无法被系统实例化。
android:exported
该服务能否被其他应用程序的组件调用或与之交互。“true”表示可以,“false”表示不可。如果为“false”,只有同一应用程序,或具有相同用户 ID 的应用程序的组件才能启动或绑定该服务。
该属性的默认值由服务是否包含意图过滤器决定。如果该服务不含任何意图过滤器,则表示要调用它必须明确指定其类名。这意味着该服务被设计为仅供应用程序内部使用(因为其他应用程序无法知晓服务的类名)。此时,exported 属性的默认值为“false”。另一方面,如果存在一个或更多的意图过滤器,则表示该服务可被外部程序调用,于是默认值为“true”。
要限制一个服务被其他应用程序调用,这只是方法之一。我们也可以利用 permission 来限制外部实体与服务发生交互(参见 permission 属性)。
android:icon
代表该服务的图标。该属性必须是某一drawable资源(包含了图像的定义)的引用。如果不为该属性赋值,该服务将默认使用应用程序的图标(参见 <application> 元素的 icon 属性)。
无论通过该属性设置,还是直接沿用 <application> 元素的图标,服务的图标也是该服务所有意图过滤器的默认图标(参见 <intent-filter> 元素的 icon 属性)。
android:isolatedProcess
如果为“true”,该服务将运行于某个特殊进程,与系统其他进程分隔,且不提供任何访问权限。此时,我们只能通过 Service API 与之通信(绑定与启动)。
android:label
用于向用户显示的服务名称。如果不为该属性赋值,该服务将默认使用应用程序的名称(参见 <application> 元素的 label 属性)。
无论通过该属性设置,还是直接沿用 <application> 元素的名称,服务的名称也是该服务所有意图过滤器的默认名称(参见 <intent-filter> 元素的 label 属性)。
该标签应该是某一 string 资源的引用,以便与其他在用户界面中显示的字符串一样进行本地化。不过,在开发过程中,为了方便,该属性也支持直接使用字符串字面量。
android:name
实现了该服务的 Service 子类的名称。它应当为完整的类名(如”com.example.project.RoomService”)。不过,为便于使用,我们可以仅使用包名之后的部分(如”.RoomService”),<manifest> 元素中指定的包名将被自动补全。
一旦我们发布了应用程序,就不该再去修改它的名称(除非 android:exported 被设为“false”)。
该属性没有默认值,但必须被赋值。
android:permission
未启动或绑定该程序所必需的权限名称。如果 startService()、bindService() 或 stopService() 的调用方不具有该权限,就无法访问该服务,Intent 对象也不会被传送。
如果该属性未赋值,<application> 元素的 permission 属性将作为其默认值。如果 <application> 元素同样为对 permission 属性赋值,该服务将不受权限保护。
如需获得更多信息,参见简介中的权限一节,或参见文档《安全与权限》。
android:process
运行该服务的进程名称。通常,一个应用程序的所有组件都运行于为其创建的默认进程。该进程与应用程序的包名同名。我们可以通过 <application> 元素的 process 属性为所有组件设置一个不同的默认进程名称。同时,组件也可以通过改写其 process 属性的值,使应用以多线程的方式运行。
如果该属性的值以冒号(”:”)起始,则会在必要时创建一个应用程序私有的新进程来运行该服务。如果进程名称以小写字母起始,该服务将运行于一个同名的全局进程。此时,该属性表示服务有权限使用该进程。于是,不同应用程序中的组件可以共享一个进程,节约了资源的使用。
参见
<application>
<activity>
引入版本
API Level 1