Activity生命周期注意事项
1、在oneActivity上启懂twoActivity,如果twoActivity是透明主题,则oneActivity生命周期只会执行到onPause 不会执行onstop和onDestory。
2、当系统认为一个Activity有可能被回收时(内存不足),会调用onSaveInStanceState(Bundle outState),(注意 是一个参数的,不是两个参数)当activity的系统配置发生改(切换横竖屏,),会调用onSaveInStanceState,也会执行 onresume onstrop ondestory。这个方法在onStop之前,可能在onReume之前也可能在之后,这个方法只在activity被异常终止时才调用,正常情况下不会调用。
3、activity重建后会调用onRestoreInstanceState,我们可以当activity销毁时在oonSaveInStanceState(Bundle outState)把数据存放在bundle中,作为参数传递个onRestoreInstanceState和onCreate。这样我们就可以在onRestoreInstanceState和onCreate中通过bundle是否为空来判断是否被重建,如果重建了就可以取出之前保存的数据恢复出来,这个方法在onstart之后。
小拓展:保存和恢复view层次结构。每个view都有onSaveInStanceState和onRestoreInstanceState 首先activity意外终止时,activity会调用onSaveInStanceState去保存数据。然后activity会委托window去保存数据,接着window在委托它上面的顶级容器去保存数据。顶层容器是一个viewGroup 肯能是DecorView。最顶层容器在一一通知他的子view来保存数据。这个一中典型的委托思想。