zoukankan      html  css  js  c++  java
  • Android开发-API指南-<service>

    <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
  • 相关阅读:
    前端通过Nginx反向代理解决跨域问题
    SpringMVC解决跨域问题
    SpringMVC空字符串转为null
    什么是优秀的程序员
    Windows下Nginx实现负载均衡
    SpringMVC实现PUT请求上传文件
    设计模式解密(6)
    设计模式解密(5)- 外观模式(门面模式)
    设计模式解密(4)- 模板方法模式
    eclipse上传新项目到GitHub
  • 原文地址:https://www.cnblogs.com/popapa/p/android_service-element.html
Copyright © 2011-2022 走看看