IPC机制

xiaoxiao2021-02-27  255

1、IPC简介                                                                    

IPC是Inter-Process Communication的缩写,含义是进程间通信,是指两个进程之间进行数据交换的过程。在Android中,最有特色的进程间通信方式就是Binder了,通过Binder可以轻松地实现进程间通信。

Android还支持Socket,通过Socket可以实现任意两个终端之间的通信。

2、多进程模式                                                                 

Android中使用多进程只有一种方法,那就是给四大组件在AndroidManifest中指定android:process属性。还有一种非常规的多进程方法,那就是通过JNI在native层去fork一个新的进程,这种方法属于特殊情况,不是常用的创建多进程的方式。

实现跨进程通信的方式很多,比如通过Intent来传递数据,共享文件和SharedPreferences,基于Binder的Messager和AIDL以及socket等。

3、Serializable接口                                                      

Serializable是Java所提供的一个序列化接口,是一个空接口,为对象提供标准的序列化和反序列化操作。想让一个对象实现序列化,只需要这个类实现Serializable接口并声明一个serialVersionUID即可。如果不声明这个serialVersionUID同样也可以实现序列化,但是这将会对反序列化过程产生影响。

静态成员变量属于类不属于对象,所以不会参与序列化过程。

用transient关键字标记的成员变量不参与序列化过程。

4、Parcelable接口                                                        

Parcelable接口也可以用来实现序列化,只要实现这个接口,一个类的对象就可以实现序列化并可以通过Intent和Binder传递。

系统已经为我们提供了许多实现了Parcelable接口的类,它们都是可以直接序列化的,比如Intent、Bundle、Bitmap等,同时List和Map也可以序列化,前提是它们里面的每个元素都是可序列化的。

5、Parcelable和Serializable的区别                             

Serializable接口是Java中的序列化接口,使用起来简单但是开销大,序列化和反序列化过程需要大量I/O操作。主要用在将对象序列化到存储设备中或者将对象序列化通过网络传输。

Parcelable是Android中的序列化方式,更适合用在Android平台上,缺点是使用起来稍微麻烦点,但是效率高。主要用在内存序列化上。

6、Binder                                                                    

a、直观上说,Binder是Android中的一个类,它实现了IBinder接口;

b、从IPC角度来说,Binder是Android中的一种跨进程通信方式;

c、Binder还可以理解为一种虚拟的物理设备,它的设备驱动是/dev/binder,该通信方式在Linux中没有;

d、从Android Framework角度来说,Binder是ServiceManager连接各种Manager(ActivityManager、WindowManager)和相应ManagerService的桥梁;

e、从Android应用层来说,Binder是客户端和服务端进行通信的媒介,当bindService的时候,服务端会返回一个包含了服务端业务调用的Binder对象,通过这个Binder对象,客户端就可以获取服务端提供的服务或者数据,这里的服务包括普通服务和基于AIDL的服务。

转载请注明原文地址: https://www.6miu.com/read-10034.html

最新回复(0)