为什么要使用多进程?
- 为了获得更大的内存(以前每个进程是16M);
- 向其他应用获取数据(通讯录),ContentProvider天生支持进程间通信;
多进程模式
可以使用process标签开启多进程模式,Application、Activity、Service、BroadcastReceiver、ContentProvider都有此标签。两个进程如果ShareUID相同,且签名相同,就可以共享内存数据。
运行机制与导致的问题
Android会为每一个进程分配一个虚拟机,所以同一个Class文件,不同的虚拟机加载后,其实是两个不同的类,两个类之间的数据改变并不会同步,因为他们由不同的地址空间。
会产生以下问题:
- 静态成员和单例模式失效
- 线程同步机制完全失效
- SharedPreferences的可靠性下降(不支持两个进程同时读写)
- Application会多次创建