一,进程和线程
线程是最小执行单位,进程可以考虑为一个应用独立运行的环境,进程包含多个线程,比如android程序,一个应用默认是一个进程,但是里面有多个线程,比如Ui线程。但为了让系统分配给应用更多的资源,可以给应用指定多个进程
方法:
<activity android:name=".ActivityTwo"
android:launchMode="singleTop"
android:process=":remote"
/>
一个进程(UID区分不同的进程),一个虚拟机
多进程优点:分配更多的资源
多进程缺点:
1,生成多个Application实例
2,Shareprefrence数据异常(sp原理是读写xml,并发写入,数据会有问题),
3,不同进行中的类和变量数据无法共享
4,线程同步机制失效(因为线程是进程的子集)
二,IPC
进程通信
实现的方式:
1,socket(window也是这种方式)
2,Intent,Binder
3,Shaprefrences
进程通信 通过Intent和Binder就需要序列号和反序列化,SpringCloud Service之间的通信也是通过这种方式
序列化和反序列化就要提到Serializable和Parcelable 两者区别:前者是java的,开销大,后者android特有,但是很复杂,相比之下,可以忽略前者的开销大,选用前者。