进程间通信,不同进程他们所处的虚拟机不同(一个进程是一个虚拟机),他们之间的通信也就因此变得有趣起来。
常见的进程通信方式
1、通过Messenger传递message(曾经写过一篇文章当时对Messenger理解错的一塌糊涂),它的的底层仍然是AIDL
2、文件的存储(这种思想很简单,就像考试作弊一样,你把答案写在小纸条,我去拿小纸条,你的信息我就获得了,这里存在一个问题,并发的问题。另外一点SharedPreferences,因为它存在缓存策略,不可共享数据)
3、内容提供者
4、AIDL
5 、Socket
这篇文章只讲下Messenger,看下Messenger源码
public Messenger(Handler target) {
mTarget = target.getIMessenger();
}
public Messenger(IBinder target) {
mTarget = IMessenger.Stub.asInterface(target);
}
从这两个构造方法看到有AIDL的痕迹的。
Messenger实现了Parcelable主要方法包括一下这些方法
它的使用就比较简单,下面有个demo,为了验证是进程间通信别忘了在注册service是进程的声明,总感觉讲的不够透彻,只可惜我就了解这么多,等感觉去少了什么,在往上添加吧
看下demo的运行结果