当前位置:操作系统 > 安卓/Android >>

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 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,