IPC是Inter-Process Communication的缩写,含义为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。
一.多进程
在Android中开启多线程只有一个方法,那就是给四大组件(Activity、Service、Receiver、ContentProvider)在AndroidManifest中指定android:process属性。
Mainvity没有为它指定process属性,所以它运行在默认的进程中,默认进程名是包名(序号为1)。
进程有以上两种命名方式,a种进程属于全局进程,其他应用通过ShareUID方式可以和它跑在同一个进程中,而b种命名方式的进程属于当前应用的私有进程。
所有运行在不同进程的四大组件,只要他们之间需要通过内存来共享数据,都会失败,这也是多进程所带来的问题。一般来说,使用多进程会造成如下几个方面的问题:
1.静态成员和单例模式完全失效
2.线程同步机制完全失效
3.SharePreferences的可靠性下降
4.Application会被多次创建
二、Serializable接口
如果不手动指定serialVersionUID的话,反序列当前类有所改变,比如增加或者删除了某些成员变量,那么serialVersionUID就会被重新赋值,于是反序列化失败,而手动指定后就不会出现这样的情况。不过,如果类结构出现的非常规性的改变,如修改了类名或者成员类型,那么即使serialVersionUID验证通过反序列也会失败,因为类结构有了毁灭性的变化。
三、Parcelable接口
四、Android中的IPC方式
1.Bundle。Android中的四大组件有三个( Activity、Service、Receiver)支持
2.使用文件共享
3.使用Messenger
4.使用AIDL
5.使用ContentProvider
6.使用Socket