No1:
在android中使用多进程只有一种方法,那就是给四大组件在AndroidMenifest中指定android:process属性。
No2:
默认进程的进程名是包名。
No3:
":"要加上当前包名,进程属于当前应用的私有进程,其他应用的组件不可以和它跑在同一个进程中;另外一种属于全局进程,其他应用通过ShareUID方式可以和它跑在同一个进程中。
No4:
Android系统会为每个应用分配一个唯一的UID,具有相同UID的应用才能共享数据。
No5:
Android为每一个应用(或者说每个进程)分配了一个独立的虚拟机,不同虚拟机在内存分配上有不同的地址空间,这就导致在不同的虚拟机中访问同一个类的对象会产生多份副本。修改一个进程中的值只会影响当前进程
No6:
所有运行在不同进程中的四大组件,只要它们之间需要通过内存来共享数据,都会共享失败,这也是多进程所带来的主要影响。
No7:
使用多进程会造成几个问题:
(1)静态成员和单例模式完全失效
(2)线程同步机制完全失效(不是一块内存,不同进程锁不是同一个对象)
(3)SharedPerference的可靠性下降(SharedPreferences不支持两个进程同时去执行写操作)
(4)Application会多次创建(相当于应用重新启动,运行在同一个进程中的组件时属于同一个虚拟机和同一个Application的)
No8:
进程间通信的方式有:Bundle、Intent、文件共享、SharedPerference、AIDL、Messenger、ContentProvider、Socket
No9:
当我们需要通过Intent和Binder传输数据时就需要使用Parcelable或者Serializable。
No10:
实际上,不声明serialVersionUID同样也可以实现序列化,但是这将会对反序列化过程产生影响。
No11:
Serializable序列化
//序列化过程 User user = new User(0,"jake",true); ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("cache.txt")); out.writeObject(user); out.close(); //反序列化过程 ObjectInputStream in = new ObjectInputStream(new FileInputStream("cache.txt")); User newUser = (User)in.readObject(); in.close();