PS:这里不讨论两个应用之间的多进程情况。(喷子勿扰)
PS:这里不讨论两个应用之间的多进程情况。(喷子勿扰)
PS:这里不讨论两个应用之间的多进程情况。(喷子勿扰)
1. 开启多进程模式
在Android中使用多进程只有一种方式,那就是给四大组件在AndroidMenifest中指定android:process属性,除此之外,没有其他的办法。也就是说我们无法给一个线程或者一个实体类指定其运行时所在的进程
其实还有另外一种非常规多进程方法,那就是通过JNI在native层去fork一个新的进程,但是这种方法属于特殊情况,也不是常用的创建多进程的方式,并且我也不会,所以级就不考虑了。
咱们看图说话,包名为com.example.text,SecondActivity的进程为com.example.text:remote,ThirdActivity的进程为com.example.text.remote。当然看到这里你或许以为进程也不过如此啊,这么简单,对此,我只能呵呵一笑,这只是开始好吗。
2. 查看进程的方法
可以再eclipse的DDMS里边查看,什么?你用的android studio,不用eclipse,这个不会也要我告诉你吧,那是不可能的,你可以这样百度,当然你也可以在android studio的命令符里边使用adb shell ps或者adb shell ps | 包名查看 但是不知道为什么最后一种查看方式我是用不了,知道的请在评论里边回复,谢谢!!
读者朋友应该注意到了SecondActivity的进程是:remote,而实际操作过的朋友应该会发现他的进程名变成了com.example.text:remote,其实“ : ”的含义是指在当前进程名前加上当前的包名,这是一种简写的方法。而ThirdActivity是一种完整的命名方法。需要注意的是“ : ”开头的进程属于当前应用的私有进程,其他的应用的组件不可以和他泡在同一个进程里边,而进程名不以“ : ”开头的属于全局进程,其他的应用通过ShareUID方式可以和它跑在同一个进程里边,
我们知道Android系统会为每个引用分配一个并且唯一的UID,具有相同UID的应用才能共享数据。这里要说明的是,两个引用通过ShareUID跑在同一个进程里是有要求的,需要这两个应用具有相同的ShareUID并且签名相同才可以。在这种情况下,可以互相访问对方的私有数据,比如data目录,组件信息等,不管他们是否跑在同一个进程。当然如果它们跑在同一个进程中,除了能共享data目录,组件信息,还可以共享内存数据,或者说他们看起来就像是一个应用的两个部分。
问题补充
今天求教了大神问了下查看进程的方式,原来是因为我处理错了,需要先进入adb shell里边然后在输入ps | 包名 就可以完成查看本项目的进程了。
网友评论