什么是进程间通讯
进程间通讯,简称IPC是Inter-process Communication的缩写,顾名思义,两个进程间进行数据的交换的过程就是进程间通讯
在Android中使用多进程只有一种方法,就是给四大组件在AndroidMenifest中指定android:process属性Android中IPC方式
(1)使用Bundle
四大组件中的三大组件都支持Intent中传递Bundle数据,由于Bundle实现了Parcelable接口,所以它可以方便的在不同进程间传输,但是,传递的数据必须是可被序列化的数据,比如基本类型和实现了Parcelable接口的对象
(2)使用文件共享
文件共享,是通过两个进程读写同一个文件来实现数据的交换,
主要有两个步骤:a,在线程中实例化一个序列化对象 b,把序列化对象写入到ObjectoutputStream
(3)使用Messager(信使)轻量级的IPC方式,在Messager中放入我们需要传递的数据就可以轻松实现,
(4)使用ContentProvider
ContentProvider是Android系统提供的进程间通讯的方式
创建自定义ContentProvider步骤
a,继承自ContentProvider接口,并重写六个方法
b,注册这个provider,在Menifest中声明标签,指明name,authorities属性,其中authorities是ContentProvider的唯一标识,通过这个属性,外部可以访问,
c,在另一个程序中,通过getContentReslover().query的方法查询数据。
(5)使用Socket
(6)使用AIDL多进程中容易出现的问题
a,静态变量和单列模式完全失效
b,线程同步机制完全失效
c,SharedPreference的可靠性下降
d,Application会多次创建Serializable和Parcelable的区别
Serializable和Parcelable都可以实现对象的序列化,并且都能用于Intent之间的数据传递,Serializable是java中的序列化接口,使用简单,但开销大,序列化与反序列化都需要大量的IO操作,Parcelable是Android中序列化的方式,虽使用起来稍麻烦,但效率高
以上是我在《Android开发艺术探索》中看到的一些关于进程间通讯的知识,简单的做了个了解,由于技术水平不够,好多还看不懂,先把能够理解的记下来