2019-04-23

IPC


android中eventbus能够实现进程间通信吗?

不可以用于多进程。EventBus貌似就是订阅者模式,而在多进程中,对象是不一致的,需要通过binder才能进行多进程通信,在这方面EventBus不支持,自然就不支持多进程了。

跨进程通信框架HermesEventBus


•BroadCastReceiver 由于面向整个系统注册的广播,跨进程消耗较大,性能不能保证。

•ContentProvider 支持跨进程数据共享

•AIDL 客户端调用AIDL接口是同步并且带返回结果的,如果执行时间较长,客户端的调用线程会一直等待。服务端执行AIDL接口是异步的,支持所有基本类型、AIDL接口、Parcelable、List、Map等类型的参数,实现起来繁琐。

•Messenger 本质是AIDL通信,客户端发送Message后不带返回结果,服务端接收到Message是通过一个线程的Handler轮询MessageQueue处理的,因此处理Message是在同一线程。

•HermesEventBus 本质也是AIDL通信,不需要自己实现绑定Service,发送事件也是不带返回结果的,使用简单。

•Binder机制 Android跨进程通信实现的核心,AIDL就是基于Binder机制实现的,其中transact方法是客户端向服务端发送消息,onTransact方法是客户端接收服务端的消息。


2019-04-23_第1张图片


2019-04-23_第2张图片


2019-04-23_第3张图片
序列化


反射







Stream


你可能感兴趣的:(2019-04-23)