ipc的理解
ipc即进程间通信,inter process communication。
ipc是多种进程间通信的统称而已。
ipc进程间通信包括
1 bundler,在Android 中的四大组件中的 activity broadcast receiver service都是能够通过intent传递bundle数据的,bundle实现了parcelable接口。
2 通过messager 通过它可以在不同进程中传递Message对象,在Message中放入我们需要传递的数据,就可以轻松地实现数据的进程间传递。
Messenger是一种轻量级的IPC方案,它的底层实现是AIDL,实现Messenger有以下两个步骤,分为服务端进程和客户端进程。
3 使用IDLE,这是一种远程服务跨进程通信的方式
4 content-provider 用于不同应用间的数据共享。底层实现的是binder。
5 socket ,可以实现任意两个终端的通信,这里使用的是socket在一个设备上进行进程间通信。
6 binder ,从ipc角度来讲,是进程间的通信。在应用层的角度来讲就是客户端和服务端的通信。
Binder是Android中的一个类,它实现于IBinder接口。从IPC角度来说,Binder是一种跨进程通信的方式。从Android应用层来说,Binder是客户端与服务端通信的桥梁,
通过bindService,服务端会返回一个包含了服务端业务调用的Binder对象,通过这个Binder对象,客户端就可以获取服务端提供的服务或者数据。这里的服务包括普通服务及基于AIDL的服务。在Android开发中,Binder主要应用于Service。
为何传输要实现parcelable
Intent不仅能传递java基本数据类型,还能传递类的对象,前提是这些类必须实现Serializable或者Parcelable接口。
实现Serializable接口的方式是通过对象的序列化和反序列化来实现对象传递的。
实现Parcelable接口的方式是通过writeToParcel将你的对象映射成
Parcel对象,再通过createFromParcel将Parcel对象映射成你的对象。也可以将Parcel看成是一个流,通过
writeToParcel把对象写到流里面,在通过createFromParcel从流里读取对象,只不过这个过程需要你来实现,因此写的顺序和读的
顺序必须一致。
参考了 https://www.cnblogs.com/cr330326/p/6340958.html
http://blog.csdn.net/huivs12/article/details/49076261
在此感谢