<service>

英文原文:http://developer.android.com/guide/topics/manifest/service-element.html
采集(更新)日期:2014-7-2
搬迁自原博客:http://blog.sina.com.cn/s/blog_48d491300100zmva.html

语法:
<service android:enabled=["true" | "false"]
android:exported=["true" | "false"]
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 的子类),并成为应用程序的一个组件。
与 Activity 不同,服务缺少可视化的用户界面。
服务用于实现需要长时间运行的后台操作,或是可被其他应用程序调用的通信频繁的API。

所有的服务都必须在 Manifest 文件中用 <service> 元素声明。
任何未声明的服务都会被系统忽略,也肯定不会被运行。

属性:
android:enabled
服务是否能被系统实例化 —“true”可以,“false”不允许。
默认值是“true”。

<application>
元素拥有自己的
enabled
属性,适用于应用程序所有的内部组件,包括服务。
服务要能被启用,
<application>
<service> 的此属性都必须设置为“true”(均为默认值即可)。
如果其中任何一个为“false”,则服务将被禁用,它就不能被实例化。

android:exported
其它应用程序的组件能否调用服务或与服务交互 — “true”可以,“false”不可以。
如果设为“false”,则只有本应用程序或用户 ID 相同程序的组件才能启动或绑定该服务。

默认值取决于服务是否包含 Intent 过滤器。
如果不含任何过滤器,则意味着只能通过指定精确类名的 Intent 对象来调用。
这表示该服务仅供应用程序内部使用(因为其他应用程序通常不知道确切的类名称)。这时的默认值是“false”。
另一方面,如果存在一个以上的过滤器,则表示服务愿意被外部使用,因此默认值是“true”。

本属性并不是限制服务对其他应用程序的公开程度的唯一途径。
还可以利用权限机制对可与服务进行交互的外部对象进行限制(请参阅permission属性)。

android:icon
代表服务的图标。
本属性必须设为对 drawable 资源的引用,该资源包含了图片的定义。
如果未设置本属性值,则会用全局性的应用程序图标来代替。(参阅
<application>
元素的
icon
属性)。

服务的图标 — 不管是在此处还是在
<application>
元素中设置的 — 同时也是本服务中所有 Intent 过滤器的默认图标(参阅
<intent-filter>
元素的
icon
属性)。

android:isolatedProcess
如果设为 true ,则本服务将会运行于一个特殊的进程中。
该进程与系统其他部分隔离,且没有自己的权限。
与其通讯的唯一手段就是通过 Service API (绑定和启动)。
android:label
供用户查看的服务名称。
如果未设置本属性,则用全局性的应用程序文本标签代替(参阅
<application>
元素的
label
属性)。

服务的文本标签 — 不管是在在此处还是在
<application>
元素中设置的 — 同时也是本服务中所有 Intent 过滤器的默认文本标签(参阅
<intent-filter>
元素的
label
属性)。

本文本标签应该设为对字符串资源的引用,这样就能像用户界面中的其他字符串一样对其进行本地化。
不过为了应用程序开发时的便利,也可以直接设置为字符串。

android:name
实现服务的
Service
子类的名称。
这应该是一个完全限定格式的类名(比如“com.example.project.RoomService”)。
不过作为简称,如果首字符为句点(比如“.RoomService”),则会在前面自动加上
<manifest>
元素定义的包名称。

应用程序一经发布,就
不应再更改名称
(除非设置了 android:exported="false")。

没有默认值。本名称必须指定。

android:permission
要启动或绑定服务的对象所必须拥有的权限名称。
如果
startService()
bindService()
stopService()
的调用者未获得本属性设定的权限,这些方法将会失效,Intent 对象也不会分发给本服务。

如果本属性未被设置,则会把
<application>
元素的
permission
属性所定义的权限应用于本服务。
如果两个地方的属性都没有设置,则本服务将不受权限机制的保护。

关于权限的详细信息,请参阅 Manifest 介绍一文中的
权限
一节及另一篇文档
安全和权限

android:process
运行服务的进程名称。
通常,应用程序的所有组件都运行在创建时的默认进程中。该进程的名称与程序包名相同。
<application>
元素的
process
属性可以为每个组件设置不同的默认进程。
但每个组件也可以用各自的 process 属性覆盖默认设置,使得程序可以跨越多个进程运行。

如果本属性设置的名称以冒号(':')开头,则必要时会新建一个属于该程序私有的进程,服务将在该新进程中运行。
如果进程名称以小写字母开头,则服务将运行于一个以此名字命名的全局进程中,并赋予应有的访问权限。
这就允许分属于不同应用程序的多个组件共享同一个进程,以减少资源的占用。

参阅:
<application>

<activity>

引入自:
API 级别 1

最新文章

  1. Linux系统修改PATH环境变量方法
  2. 如何将MyEclipse项目导入eclipse
  3. 笔记本(WIN7|XP)发射wifi信号 当无线路由使用
  4. 为什么mvc里面的ModelState.IsValid一只都是true
  5. Android Service和Thread的关系
  6. 获得N位数字字母随机组合
  7. CocoaPods 使用手册
  8. LA 4123 (计数 递推) Glenbow Museum
  9. Swift常用语法示例代码(一)
  10. JDOM
  11. (转载)反编译android的apk文件步骤
  12. 中国(北方)大学生程序设计训练赛(第一周) (D E)
  13. View的绘制流程
  14. vs问题--------------标记为系统必备组建...
  15. [Vue warn]: Duplicate keys detected: &#39;1&#39;. This may cause an update error
  16. 调皮的程序员:Linux之父雕刻在Linux内核中的故事
  17. 【APIO2018】铁人两项(圆方树,动态规划)
  18. HNU 2015暑期新队员训练赛2 H Blanket
  19. 关于java项目中的XML文件
  20. 吴恩达-coursera-机器学习-week4

热门文章

  1. IntelliJ IDEA中如何设置同时打开多个文件且分行显示?
  2. RabbitMQ和Kafka
  3. 【gradle】之maven主库找不到Could not find org.restlet.jee:org.restlet:2.1.1
  4. item2,实现singleton模式
  5. “代理 XP”组件已作为此服务器安全配置的一部分被关闭。解决方法
  6. IOS中UIWebView停止加载
  7. 探秘JavaScript中的六个字符
  8. 一个原生的JavaScript拖动方法
  9. Spark1.4启动spark-shell时initializing失败
  10. c语言-枚举