我的Android读书笔记——(1)

今天来阅读《Android开发艺术探索》

1、Activity生命周期和启动模式

问题1、架设当前Activity为A,如果这是用户打开一个新的ActivityB哪儿B的onResume和A的onPause哪个先执行呢?

答案是通过Android的源码可以了解到在启动一个新的Activity之前,需要先让旧的Activity执行onPause.所以需要旧的Activity先执行onPause然后新的Activity再执行onResume.

注意点:onSaveInstanceState和onRestoreInstanceState只有在Activity的生命周期内出现异常的情况下才会执行。

首先Activity被意外终止时,Activity会调用onSaveInstanceState去保存数据,然后Activity会委托Window去保存数据,接着Window再委托它上面的顶级容器去保存数据。

2、Android IPC

IPC是两个进程之间进行数据交换或者跨进程间通讯,一个进程包含多个线程,在主线程中包含过多的耗时操作会导致ANR(程序无响应),解决办法就是把耗时操作放置到线程中避免耗时操作在主线程中执行。IPC并不是Android独有的,所有的操作系统都有自己的IPC机制,在Android中最有特色的进程间通讯就是Binder,通过Binder可以听讼的实现进程间通讯,除了Binder之外Android孩纸吃Socket,通过socket也可以实现任意两个终端之间的通讯,当然同一个设备上的两个进程通过socket通讯自然也是可以的。通过ContentProvider,以及SQlite也可以实现进程间通讯。

Android多进程模式

通过给四大组件指定android:process属性就可以轻松的开启多进程模式

一个应用中使用多进程模式可能带来的问题如下:

1、静态成员和单例失效

2、线程同步机制失效

3、SharePreference可靠性下降

4、Application会多次创建

5、一个应用中使用多进程开发就相当于启动了多个应用,也相当于启动了多个虚拟机,所以占用内存增加

序列化和反序列化

Serializable是Java中的序列化接口,使用起来比较简单,但是开销比较大,序列化和反序列化需要大量的I/O操作。而Parcelable是Android中的序列化方式,因此更适合用在Android平台上,确定是使用起来稍微麻烦,但是效率高,Parcelable是Android推荐的方式,因此首选Parcelable。Parcelable主要用在内存序列化上,通过Parcelable将对象序列化到存储设备中或者将对象序列化后通过网络传输也都是可以的,但是这个过程略显复杂,因此在这两种情况下建议大家使用Serializable。







你可能感兴趣的:(Android)