您的位置:首页 > 移动开发 > Android开发

android 学习 IPC机制

2015-10-10 15:22 253 查看
IPC 进程间通信 inter_process_commuunication

android中开启进程的方法,

在四大组件AndroidMenifest中配置process属性

如 android:process=”:remote”

android:process=”adbh.remote”

上述两种方式,第一种进程名前面加上:时表示以当前应用包名为进程前缀,并且该进程为私有进程,其他应用的组件不能与其处于同一进程中

第二种进程名为完全命名不会加上当前包名作为前缀

该进程属于全局进程,其他应用可以通过ShareUID方式和它处于同一个进程中

当应用中四大组件配置的process属性时带来的变化

*1 application会创建n次(n=进程数量)不同的application运行在不同的虚拟机中

*2 静态成员和单例模式将会失效,因为android会给每个进程分配一个虚拟机,而每个虚拟机对应的内存又不同,所以内存中会存在多个静态成员变量,单例也是一样

*3线程同步也将失效,同2因为用的锁也不同了

*4sharedprefrence将变得不是很可靠,因为sharedprefrence底层是依靠读写xml来进行存储的,当并发写时货并发读时都会出现问题

由于以上原因,不管是同应用或者不同应用,当进程间需要进行通信时,就需要通过其他方法来进行通信了

IPC通信的方式有如下几种

Bundle:通过利用bundle来进行进程间通信

文件共享:如sharedprefrence,

AIDL: 应用范围最广的进程通信方法

Messager: 只能进行串口的访问方式,不能进行高并发,只能一个一个的处理消息

Socket:实现麻烦,适合网络数据间的交换

ContentProvider: 收约束的AIDL主要用于数据共享

Bundle使用及上层原理

通过AIDL来分享Bundle的工作机制

*1 首先新建一个.aidl文件 待续
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: