android:process=":remote"属性解说

在学习Android Service组件的过程中碰到了一个问题,就是在Android应用的声明文件Manifest.xml中有时候会对相关的服务标签设置一个android:process=”:remote”,这个属性有什么作用呢?下面笔者就将自己整理的知识和大家分享。

在Android的帮助文档中我们可以了解到,一般情况下一个服务没有自己独立的进程,它一般是作为一个线程运行于它所在的应用的进程中。但是也有例外,Android声明文件中的android:process属性却可以为任意组件包括应用指定进程,换句话说,通过在声明文件中设置android:process属性,我们可以让组件(例如Activity, Service等)和应用(Application)创建并运行于我们指定的进程中。下面是相关资料和笔者翻译。

如果我们需要让一个服务在一个远端进程中运行(而不是标准的它所在的apk的进程中运行),我们可以在声明文件中这个服务的标签中通过android:process属性为其指定一个进程。

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

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

android:process

服务所在进程的名字。通常,一个应用的所有组件都运行在系统为这个应用所创建的默认进程中。这个默认进程是用这个应用的包名来命名的。

标签的process属性可以设置成和所有组件都不同的默认值。但是这些组件可以通过设置自己的process值来覆写这个默认值,这样可以让你的应用跨多进程运行。

如果被设置的进程名是以一个冒号开头的,则这个新的进程对于这个应用来说是私有的,当它被需要或者这个服务需要在新进程中运行的时候,这个新进程将会被创建。如果这个进程的名字是以小写字符开头的,则这个服务将运行在一个以这个名字命名的全局的进程中,当然前提是它有相应的权限。这将允许在不同应用中的各种组件可以共享一个进程,从而减少资源的占用。

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

时间: 2024-10-18 15:36:43

android:process=":remote"属性解说的相关文章

apk,task,android:process与android:sharedUserId的区别

apk一般占一个dalvik,一个进程,一个task.通过设置也可以多个进程,占多个task. task是一个activity的栈,其中"可能"含有来自多个App的activity 默认情况下,同一个应用程序中的所有组件运行在同一个进程中,而且绝大多数的应用程序也都是这样的.但是,如果我们想要控制让某个特定的组件属于某个进程,我们可以在manifest文件中进行配置. 在 每种组件元素(activity.service.receiver.provider)的manifest条目中,都支

android开发之android:process属性_application中onCreate执行多次

应用做的匆忙,很多地方只顾实现功能,没有兼顾好性能,所以停下来重构代码优化性能,结果在打log看启动时间的时候,发现 Application的onCreate执行了多次,这样导致重复初始化资源,初始化了3次导致接近1s时间. 发现这个是由独立进程引起的.即:process这个属性. android:process 服务所在进程的名字.通常,一个应用的所有组件都运行在系统为这个应用所创建的默认进程中.这个默认进程是用这个应用的包名来命名的. 标签的process属性可以设置成和所有组件都不同的默认

Android控件属性大全[整理转载]

控件属性: android属性 Android功能强大,界面华丽,但是众多的布局属性就害苦了开发者,下面这篇文章结合了网上不少资料, 第一类:属性值为true或falseandroid:layout_centerHrizontal??水平居中 (Hrizontal表示水平)android:layout_centerVertical???垂直居中 (Vertiacl表示垂直)android:layout_centerInparent????相对于父元素完全居中android:layout_alig

Android控件属性手册

控件属性: 第一类:属性值为true或falseandroid:layout_centerHrizontal  水平居中android:layout_centerVertical   垂直居中android:layout_centerInparent    相对于父元素完全居中android:layout_alignParentBottom 贴紧父元素的下边缘android:layout_alignParentLeft   贴紧父元素的左边缘android:layout_alignParentR

android布局相关属性

 android属性 Android功能强大,界面华丽,但是众多的布局属性就害苦了开发者,下面这篇文章结合了网上不少资料, 第一类:属性值为true或false android:layout_centerHrizontal  水平居中 android:layout_centerVertical   垂直居中 android:layout_centerInparent    相对于父元素完全居中 android:layout_alignParentBottom 贴紧父元素的下边缘 android:

Android Activity标签属性

Android Activity标签属性 Activity 是 Android 系统四大应用组件之一,用户可与 Activity 提供的屏幕进行交互,以执行拨打电话.拍摄照片.发送电子邮件等操作开发者必须在清单文件中声明要使用的 Activity,这样系统才能访问它.声明方式是在 < application > 元素中添加 < activity > 子元素 1 <application 2 android:allowBackup="true" 3 andr

Android ListView常见属性问题

Question 1: listview在拖动的时候背景图片消失变成黑色背景.等到拖动完毕我们自己的背景图片才显示出来. 解决办法: xml中: android:scrollingCache="false"  或者 android:cacheColorHint="#00000000" 代码中: setScrollingCacheEnabled(false)  或者 setCacheColorHint(0)  或者setCacheColorHint(Color.TRA

the process android.process.acore has stopped或the process com.phone。。。。

模拟器一启动 The process android.process.acore has stopped unexpectedly 今天不知道怎么回事,模拟器一启动就狂报错, 模拟器已经重新安装过了,刚开始是脸界面都进不了, 后来进去了 launcher,报了The process android.process.acore has stopped unexpectedly这个错. 后来我试着重建模拟器的时候起了一个我以前从来不用的名字,OK了. 估计是我以前的模拟器有程序把系统搞crash了,

android布局常用属性记录

android布局常用属性记录 27. 三 / android基础 / 没有评论 http://blog.csdn.net/xn4545945/article/details/7717086这里有一部分别人总结的其余的: align:对齐 parent:容器 bottom:底部 alignparentbottom:是否显示在容器底部. 值为true 或者 false android:layout_alignParentBottom=”true” android:gravity=”top” htt