Android:process属性说明

    通常,一个应用的所有组件都运行在系统为这个应用所创建的默认进程中。这个默认进程是用这个应用的包名来命名的,<application>元素有一个“android:process”属性,可以设置android:process=“默认包名”来设置应用全部组件的默认进程名。


    每种组件元素(activity、service、receiver、provider)的manifest条目中,都支持一个“android:process”的属性,这些组件可以通过设置自己的process值来覆写这个默认值,这样可以让你的应用跨多进程运行。

    1)如果被设置的进程名是以一个冒号开头的,则这个新的进程对于这个应用来说是私有的,当它被需要或者这个服务需要在新进程中运行的时候,这个新进程将会被创建。

    如:


<receiver
            android:name="com.xx.xx"
            android:process=":remote" />



  

 注意:这里选择”remote”这个名字是随意主观的,你能用其他名字来让这个服务在另外的进程中运行。冒号’:’这个前缀将把这个名字附加到你的包所运行的标准进程名字的后面作为新的进程名称。

    例如:一个应用的包名为com.aoyousatuo.example, 则本例中服务将运行的新进程的名称为com.aoyousatuo.example:remote.(注意,如果声明文件中的组件或者应用没有指定这个属性则默认应用和其组件将相应运行在以其包名命名的进程中).


    2)如果这个进程的名字是以小写字符开头的,则这个服务将运行在一个以这个名字命名的全局的进程中,当然前提是它有相应的权限。这将允许在不同应用中的各种组件可以共享一个进程,从而减少资源的占用。


        例如一个应用运行在进程com.aoyousatuo.example中,android:process属性设置为com.rabbit.run,则新的进程名字为com.rabbit.run。