IPC
- Android 的进程间通信就是 Binder.
Android 中一个应用中的多进程: android:process 属性,给四大组件在AndroidMenifest中指定process即可。一般不这么干,在push中使用较多。
多进程带来很多问题:
a.静态成员和单例模式完全失效
b.线程同步失效
c.SharedPreferences失效:不支持多进程同时执行写操作
d.Application会多次创建
Serializable : 最好设置serialVersionUID,否则变更成员变量后,其默认的UID会变,版本迭代中而产生bug。
使用简单,性能稳定,开销大,大量的I/O操作
Parcelable:在Binder中传输。使用效率高,相比而言稳定差一点。
- 其他IPC,大多底层都是Binder
a.使用Bundle, 启动新的Activity时,用Bundle
b.使用文件共享
c.使用Messenger(信使),其实就是AIDL
d.AIDL
e.使用ContentProvider
c.使用socket
Binder
- 1.client通过获得一个server的代理接口,对server进行调用。
- 2.代理接口中定义的方法与server中定义的方法时一一对应的。
- 3.client调用某个代理接口中的方法时,代理接口的方法会将client传递的参数打包成Parcel对象。
- 4.代理接口将Parcel发送给内核中的binder driver。
- 5.server会读取binder driver中的请求数据,如果是发送给自己的,解包Parcel对象,处理并将结果返回。
- 6.整个的调用过程是一个同步过程,在server处理的时候,client会block住。因此client调用过程不应在主线程。