《android开发艺术探索》读书笔记(二)--IPC机制

接上篇《android开发艺术探索》读书笔记(一)

No1:

在android中使用多进程只有一种方法,那就是给四大组件在AndroidMenifest中指定android:process属性。

No2:

默认进程的进程名是包名

No3:

《android开发艺术探索》读书笔记(二)--IPC机制

《android开发艺术探索》读书笔记(二)--IPC机制

":"要加上当前包名,进程属于当前应用的私有进程,其他应用的组件不可以和它跑在同一个进程中;另外一种属于全局进程,其他应用通过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();

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzsfdx.html