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文件 待续
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文件 待续
相关文章推荐
- android ndk x86 Support
- Android getevent/sendevent详解
- Android的MVP模式应用(Login)
- Android开发最佳实践
- [置顶] 我的Android进阶之旅------>Android中制作和查看自定义的Debug版本Android签名证书
- Android-EditText 自定义带删除功能的EditText
- Android自定义控件开发系列(一)——第一次动手做自定义控件
- Android Scroll原理分析
- Android 开源库汇总
- Android项目的打包签名及应用的版本升级(一)
- Android 继承SwipeRefreshLayout添加上拉加载事件
- android ndk NEON Support
- android studio 插件安装
- I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard-android.sh hacking
- Android SimpleAdapter的参数
- android的自定义属性
- android权限问题
- Android获取TextView文本实际宽度
- 新建一个Android项目helloWorld
- android ListView详解