Android Manifest之<service>元素中文注释
语法
<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(Service的子类)。和activities不同的是,services缺乏可视化的用户接口。它们用来实现长期运行的后台操作或由其它应用调用的富通信API。
所有的services都必须在manifest文件中通过<service>元素来表示。没有在manifest中声明的将对系统不可见并且绝不会运行。
属性
android:enabled
是否这个service能被系统实例化-如果能则为true,否则为false。默认为true。
<application>元素有它自身的能应用到所有应用组件的enabled属性,包括services。要是这个service要enabled,那么这个<application>和<service>属性都必须为true(它们都是默认值)。如果有一个为false,这个服务就会disabled;它就不会被实例化。
android:exported
是否其它应用组件能调用这个service或同它交互-如果能则为true,否则为false。当值为false时,只有同一个应用的组件或有相同用户ID的应用能启动这个服务或绑定它。
默认值依赖于服务是否包含intent filters。过滤器的缺失意味着它只能通过指定它准确类名来调用它。这就意味着这个服务只能在应用内部被使用(因为其它应用不知道类名)。因此,在这种情况下,默认值是false。另一方面,至少有一个过滤器意味着这个服务可以在外部被使用,因此,默认值为true。
这个属性并非是限制这个服务暴漏给其它服务的唯一途径。你也能通过权限来限制跟服务交互的外部实体(参见permisson属性)。
android:icon
服务呈现的图标。这个属性必须被设置为包含图片的drawable资源的引用。如果没有设置,那么这个application的图标将代替它(参见<application>元素的icon属性)。
对所有的intent filters来说,这个服务的图标无论是自身设置的还是通过<application>设置的,都是它们的默认图标(参见<intent-filter>元素的icon属性)。
android:isolatedProcess
如果设置为true,这个服务将运行在专门的进程中,这个进程从系统的剩余部分独立出来,它自身没有权限。同它唯一的通信方式就是通过这个Service API(binding或starting)。
android:label
这个服务给用户显示的名称。如果这个属性没有设置,将使用<application>的label属性代替(参见<appliation>元素的label属性)。
这个服务的label,无论是通过自身设置的,还是通过application设置的,对于这个service的intent filters来说都是默认值(参见<intent-filter>元素的label属性)。
这个label应当设置为string资源的引用,以便在用户接口中能同其它string资源一样本地化。然而,在开发应用时为了方便起见,它也能被设置为raw串。
android:name
实现这个service的Service子类名称。这应当是完整格式的类名(例如,“com.example.project.RoomService”)。然而,作为一个简写,如果名称的第一个字母是点(例如,“.RoomService”), 它会被添加到在<manifest>元素中声明的包名后面。
一旦你发布了你的应用,你就不要修改这个名字(除非你设置了android:exported=false)。
没有默认值,这个名称必须被指定。
android:permission
为了启动这个service或绑定到它一个实体必须要有的权限的名称。如果startService(),bindService()或stopService()的调用者还没有获取这个授权,那么这些方法就不会工作,而且这个intent对象也不会传递到service。
如果这个属性没有设置,由<application>元素的permission属性设置的权限就会应用到这个service。如果都没有设置,那么这个服务就不再受权限保护。
android:process
服务将要运行的进程名称。一般来讲,应用的所有组件都运行在应用创建的默认进程中。就像应用的包名一样。<application>元素的process属性能对所有组件设置不同的默认值。然而,组件能通过它自身的process属性重写默认值,从而允许你扩展你的应用跨越多个进程。
如果分配到这个属性的名称以冒号(:)开始,那么当需要它的时候,一个新的、对这个应用私有的进程就被创建,同时这个服务就在哪个进程运行。如果进程的名字以小写字母开始,那么这个服务将运行在全局进程中。这就允许在不同应用中的组件共享这个进程,降低资源的消耗。
补充:移动开发 , Android ,