Android面试篇之IPC机制[进程之间的通讯]
2017-12-15 14:23
375 查看
简介
IPC Inter-Process Communication 跨进程通讯,两个进程之间进行数据交换的过程在Android中的多进程一般指一个应用中存在多个进程的情况,下面讨论一个应用中多进程的情况。
开启多进程的方式
在AndroidManifest.xml文件中,给四大组件指定android:process属性即可,值为进程的名称,如下<service android:name="com.katherine.du.everydaystudy.up20171214.aidl.server.BookManagerService" android:process=":remote"> </service> <provider android:name=".up20171214.contentprovider.remoteprovider.BookProvider" android:authorities="com.katherine.du.everydaystudy.provider" android:process="com.katherine.du.everydaystudy.provider"> </provider>假设我的包名为com.katherine.du.everydaystudy,上面的BookManagerService将会运行在名为“com.katherine.du.everydaystudy:remote”的进程中,
BookProvider将会运行在“com.katherine.du.everydaystudy.provider”的进程中。
至于区别,以“:”开头的进程属于当前应用的私有进程,其他应用的组件不可以和它跑在同一个进程中;而不以“:”开头的进程属于全局进程,其他应用通过ShareUID方式可以喝它跑在同一个进程中。
跨进程通讯方式
1. 使用Bundle
Bundle是实现了Parcelable接口的,所以可以方便地在不同的进程间携带数据。Activity、Service、Receiver都支持在Intent中传递Bundle数据。2. 使用文件共享方式
两个进程可以通过读写同一个文件进行传递数据,但对数据同步的处理有局限性,且无法做到即时通信。3. 使用Messenger
在不同的进程中传递Message对象,底层实现是AIDL,局限性:串行处理消息,只能通过Message的Bundle进行数据传递。4. 使用AIDL
通过AIDL实现跨进程的方法调用,高并发实时通信,同样适用于两个应用之间。● 首先建立一个Service和一个AIDL接口
● 创建一个类继承自AIDL接口中的Stub类并实现Stub中的抽象方法,并在Service中的onBind方法中返回这个类的对象
● 最后客户端就可以绑定服务端的Service,建立连接后即可访问服务端的方法了
5. 使用ContentProvider
系统预置了很多ContentProvider,如通讯录信息等,也可以自定义ContentProvider,只需要继承ContentProvider并实现其中的onCreate getType insert delete update query这六个方法。通常情况下,ContentProvider以表格的形式组织数据,但也支持文件数据,如图片、视频等。6. 使用Socket套接字
此方法同样适用于两个应用之间,或不同的设备之间相关文章推荐
- Android IPC进程间通讯机制学习笔记
- 2011年Android IPC进程间通讯机制学习笔记之一
- Android IPC进程间通讯机制
- Android IPC进程间通讯机制学习笔记
- Android IPC进程间通讯机制学习笔记
- Android IPC进程间通讯机制
- Android IPC进程间通讯机制
- Android IPC进程间通讯都有哪些方式
- Android IPC 通讯机制源码分析
- 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
- Android应用中通过AIDL机制实现进程间的通讯实例
- Android IPC 通讯机制源码分析【上】
- 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
- Android IPC 通讯机制源码分析 (二)
- Android应用中通过AIDL机制实现进程间的通讯实例
- Android应用中通过AIDL机制实现进程间的通讯实例
- 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
- Android系统进程间通讯Binder机制
- Android IPC机制(三)——利用AIDL实现跨进程通信
- Android应用中通过AIDL机制实现进程间的通讯实例