Android面试篇之IPC机制[进程之间的通讯]
来源:互联网 发布:java教程电子书下载 编辑:程序博客网 时间:2024/05/17 04:48
简介
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机制[进程之间的通讯]
- Android IPC进程间通讯机制
- Android IPC进程间通讯机制
- Android IPC进程间通讯机制
- Android IPC进程间通讯机制学习笔记
- Android IPC进程间通讯机制学习笔记
- Android中进程间通讯(IPC)方式之一AIDL机制
- android IPC 进程间通讯
- Android的IPC(进程间通信)机制
- Android的IPC机制(进程间通信)
- Android面试篇之多线程[线程之间的通讯]
- 进程之间的通讯之共享内存
- 进程之间的通讯之管道
- IPC机制的几种通讯方式之ContentProvider
- Android线程之间的通讯机制Handler
- 进程之间的通讯
- Android IPC机制之 Android的各种IPC方式
- Android AIDL实现进程间通讯IPC
- JDK与JRE及其在Eclipse中的使用
- java 行为模式 责任链模式
- struct,class的sizeof大小问题
- DebuggerStepThrough 属性
- 多种CSS3动画效果星级评分特效
- Android面试篇之IPC机制[进程之间的通讯]
- 序列化二叉树的一种方法是使用预序遍历。当我们遇到一个非空节点时,我们记录节点的值 如果它是一个空节点,我们使用一个哨兵值如#记录。
- 40. Combination Sum II
- 遍历 HashMap
- 4.3(2)
- Mybatis入门以及配置文件解析
- QT 创建UDP Socket通信
- Java 向post接口传json参数,得到结果
- 20.springboot的多模块部署