1、如果新的Activity采用了透明主题,那么当前Activity不会回调onStop;
2、onPause和onStop都不能执行耗时的操作,尤其是onPause,因为onPause必须先执行完,新的Activity的onResume才会执行。尽量在onStop中做操作(如停止动画、存储数据),从而使得新的Activity尽快显示出来;
3、Activity在异常终止的情况下(如系统配置发生改变或者系统内存不足时),系统会调用onSaveInstanceState来保存当前Activity的状态。这个方法的调用时机是在onStop之前,和onPause没有既定的时序关系,有可能是之前也有可能是之后;
4、我们可以通过onRestoreInstanceState和onCrate方法来判断Activity是否被重建了,并取出之前保存得数据恢复,从时序上来说,onRestoreInstanceState的调用时机是在onStart之后;
5、当Activity在异常情况下需要重新创建时,系统会默认为我们保存当前Activity的视图结构,并且在Activity重启后为我们恢复,比如文本框中用户输入的数据、ListView滚动的位置等;
6、DecorView是整个Window界面的最顶层view,它只有一个子元素LinearLayout,代表整个Window界面,包括通知栏、标题栏和内容显示栏三块区域,LinearLayout有两个FrameLayout子元素;
7、关于保存和恢复view层次结构,系统采用的是典型的“委托思想”,即上层委托下层、父容器委托子元素去处理一些事情,这种思想在Android中有很多应用,比如View的绘制过程、事件分发等都是采用的类似思想;
8、如果一个进程中没有四大组件在执行,那么这个进程将很快被系统杀死,因此,一些后台工作不适合脱离四大组件而独自运行在后台,这样的进程很容易被杀死,比较好的方法是将后台工作放入service中从而保证进程有一定的优先级,这样就不会被轻易地被系统杀死;
9、当系统配置发生改变(如旋转屏幕、调出了键盘等),会导致Activity重新创建。为了不让它重新创建,我们可以给Activity指定configChanges属性。在AndroidMenifest.xml中为Activity声明 android:configChanges="orientation|keyboardHidden";系统会调用onConfigurationChanged方法,我们可以在这个方法里面做一些自己的特殊处理;
10、minSdkVersion和targetSdkVersion有一个大于13的话,为了防止旋转屏幕时Activity重启,除了orientation,我们还需要加上screenSize。