一.IPC是Inter-Process Communication的缩写,含义为进程间通信。是指两个进程之间进行数据交换的过程。
Android中会为每一个应用分配一个独立的虚拟机,或者说为每个进程都分配一个独立的虚拟机,不同的虚拟机在内存分配上有不同的地址空间,这就导致在不同的虚拟机中访问同一个类的对象会产生多分副本。
使用多线程会造成的问题:
1.静态成员和单例模式完全失效;
2.线程同步机制完全失效;
3.SharePreference的可靠性下降;
4.Application会多次创建。
二.IPC基础概念:
1.Seriaizable接口:
Seriaizable是Java所提供的一个序列化接口,它是一个空接口,为对象提供标准的序列化和反序列化操作。实现Seriaizable序列化只需Bean类实现Seriaizable接口类即可。
对对象的序列化和反序列的操作只需采用ObjectOutPutStream和ObjectInPutStream:
//序列化
User user=new User(0,"wang",true);
ObjectOutPutStream out=new ObjectOutPutStream (new FileOutPutStream("cache,text"));
out.wrteObject(user);
out.close;
//反序列化
ObjectInPutStream out=new ObjectInPutStream (new FileOutPutStream("cache,text"));
User newUser=(User)in.readObject();
in.close;
2.Pareclable接口:
Pareclable也是一个接口,只要实现这个接口,一个类的对象就可以实现序列化并可以通过Intent和Binder传递。
3.Binder: