IPC
来源:互联网 发布:安卓好的看书软件 编辑:程序博客网 时间:2024/05/17 18:23
IPC
IPC在android中有多种实现方式,包括bundle,文件,aidl,messenger等,要讲IPC之前先要说一下对象的序列化
数据通信都是需要对象实现序列化的,android的序列化有两种方式Serializable和Parcelable
- Serializable是java序列化的实现方式,优点是使用简单,缺点是性能差,需要不断的I/O读写。这种的序列化其实就是把对象通过流的方式写入到文件中,反序列化时再从文件中读。实现Serializable接口都会有常量serialVersionUID的存在,他的左右是作为反序列化时匹配的钥匙,如果没有serialVersionUID我们也可以序列化成功,但是反序列化可能就会出现问题,建议不要删除serialVersionUID常量。
- Parcelable是android特有的实现序列化的方式,优点是效率高,缺点是使用复杂。Parcelable中的writeToParcel方法就是实现序列化,new Creator<>()对象实现反序列化
多进程数据传递出现问题的原因:实现多进程的方式很简单,在Androidminefest.xml中添加process标签就可以实现,每个进程都是一个单独的虚拟机,会有单独的内存空间,所以如果一个应用用多进程的方式可以向系统申请更多的内存空间,伴随的问题也出现了,每个进程的内存也是分开的,内存中的数据就无法实现共享。
bundle是通过intent绑定的方式传递,只能传递bundle支持的数据类型,bundle本身实现了Parcelable接口
文件的方式是通过不同进程的读写来实现数据共享,但是如果两个进程同时读写文件就会造成数据出错,因为是不同内存空间所有无法使用线程锁的方式。
messenger的方式是通过binder用message共享数据,服务端新建messenger并绑定一个messagehandler,handler用来接收客户端发来的message,客户端绑定service,service会返回一个binder对象,用binder创建messenger发送message数据
aidl本质上也是用binder的方式实现IPC,系统会通过我们的aidl文件生成一个和aidl同名的java文件,这个类中包含Stub类和Proxy类,实际上Stub类就是Binder,Proxy是用于多进程通信的代理类,直接和客户端交流
0 0
- IPC
- ipc$
- ipc$
- ipc$
- ipc$
- IPC
- IPC$
- IPC$
- IPC
- IPC
- IPC
- IPC
- IPC
- IPC
- IPC
- ipc
- IPC
- IPC
- 获取checkbox选中当前行的值
- pat 1015
- 物理与程序
- Java之多态性
- 使用ZooKeeper实现软负载均衡(原理)
- IPC
- 欢迎使用CSDN-markdown编辑器
- 基于processing的简单音频可视化
- 【深度学习:CNN】Batch Normalization解析(1)
- C#学习过程中解决的问题
- 机器学习 周志华 读书笔记 第1章 绪论
- 了解lucene的基本概念
- Java工厂模式的三种设计方式
- ORA-08002: sequence CURRVAL is not yet defined in this session