任玉刚【Android开发艺术探索】读后笔记四

1、进程和线程是两个截然不同的概念,进程是一般指一个执行单元,在PC和移动设备上指一个程序或者一个应用,线程是CPU调度的最小执行单元,同时线程是一种有限的系统资源。一个进程可以只包含一个线程(主线程,在Android里面也叫UI线程,在UI线程里面才能操作界面元素),也可以包含多个线程;

2、ANR,应用无响应。解决这个问题需要把一些耗时的任务放在线程中去;

3、IPC,进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程;

4、在Android中使用多进程只有一种办法,就是给四大组件在AndroidMenifest中指定android:process属性,也就是说我们无法给一个线程或者一个实体类指定其运行时所在的进程。(还有一个非常规的办法是通过JNI在native层去fork一个新的进程)

5、进程名以“:”开头的进程属于当前应用的私有进程,其他应用的组件不可以和它跑在同一个进程中,而进程名不以“:”开头的进程属于全局进程,其他应用通过ShareUID方式可以和它跑在同一个进程中(需要有相同的shareUID并且签名相同)

6、直接指定android:process属性开启多进程会造成下面几方面的问题:

(1)静态成员和单实例模式完全失效;

(2)线程同步机制完全失效;

(3)SharedPreferences的可靠性下降;

(4)Application会多次创建。

7、运行在不同进程中的组件是属于两个不同的虚拟机和Application的,不同虚拟机在内存分配上有不同的地址空间,这就导致在不同的虚拟机中访问同一个类会产生多份副本,从而共享数据失败;

8、通过Intent和Binder传输数据时需要使用Parcelable或者Serializable接口完成对象的序列化过程;

9、静态成员变量属于类不属于对象,所以不会参与序列化过程,用transient关键字标记的成员变量也不参与序列化过程;

10、Serializable使用起来简单但是开销大,需要大量的I/O操作,而Parcelable使用起来稍微麻烦但是效率很高,更适合用在Android平台上,也是Android推荐的序列化方式。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值