Android开发艺术探索学习-老生常谈Activity生命周期

前言:最近看到一本比较适合自己的好书叫《Android开发艺术探索》,发现该书对自己提升技术非常有好处,然后就想着用该书结合android官方开发文档从头开始细细品味一下,深入理解知识点(因为目前项目不是很忙,所以学习的时间比较多)。当然我给自己的学习规划还是从Activity开始,按照该书的目录一路看书去,希望自己看完这本书后技术能力能有一个很大的提升。下面都是自己记录在印象笔记中的笔记,感觉用这种笔记习惯去学习真是极好了!!

1.1 关于Activity的生命周期。
onCreate:生命周期的第一个方法,该方法里面,我们会做一些初始化工作,比如用setContentView加载布局,恢复bundle数据,初始化控件和数据等等。
onRestart:该方法必须在 执行到onStop方法后调用,常见情形就是用户按下home键后再次返回到该Activity。
onStart:该方法表示Activity已经可见,但还没有出现到前台,还不能与用户交互。
onResume:该方法表示Activity已经可见并可以与用户交互了。但是这里要注意和onStart的区别,onStart的时候Activity还在后台,onResume的时候Activity才显示到前台。
onPause:Activity失去焦点,该方法可以做数据存储、停止动画和其他消耗CPU的操作,但是该方法不能做耗时的操作,不然会影响新Activity的显示。
onStop: Activity变为不可见,同样也不能做一些耗时的回收操作;
onDestory:该方法是Activity生命周期中的最后一个回调,这里可以做资源释放和回收的工作;

1.2 一个Activity总共有四种状态:
1.如果一个Activity运行在前台(在栈顶),那么它是激活态或运行态。
2.如果一个Activity失去了焦点但是仍然可见(就是说有个非全屏或者透明的Activity在该Activity之上),那么它是暂停态。一个暂停态的Activity是完全存活的状态(它持有所有的状态和成员信息,并且与window manger保持联系)。但是在极其低的内存条件下还是可能会系统回收掉。
3.如果一个Activity被其他的Activity完全覆盖,那么它是停止态。它仍持有所有的状态和成员信息,但是对用户来说它不再可见,因此它的window被隐藏了,并且当系统需要内存的时候,那么它首当其冲被回收!
4.如果一个Activity是暂停态或者停止态,那么系统会从内存中回收它,或者简单粗暴地直接杀掉它所在的进程。不过当该Activity重新展示给用户的时候,它必须完完全全地被恢复到先前的状态。

Note:这里有需要注意下在Activity生命周期中,在onCreate、onStart、onResume过程中的Activity是不能被“Kill”的,但是在onPause(HoneyComb版本之前)、onStop、onDestory过程中的Activity都有可能被系统“Kill”,因此我们应该在onPause中将数据保存到存储介质上。此外onSaveInstanceState也可以进行数据保存,但是这需要Activity重新Create才能进行还原数据。所以用onSaveInstanceState保存数据不是很安全,毕竟onSaveInstanceState不是Activity的生命周期。所以google建议我们在onPause中保存重要数据。

1.3 Activity的生命周期图如下:

Android开发艺术探索学习-老生常谈Activity生命周期_第1张图片

1.4 谷歌官方对于生命周期中几个关键循环的地方给了一些建议:
1.(entire lifetime)Activity生命周期的整个过程是从第一个方法 onCreate开始到最后一个方法onDestory结束。一个Activity会在onCreate中做所有的初始化工作,接着会在 onDestory 中释放掉所有持有的资源。
2.(visible lifetime)指Activity处于onStart和与之相对应的onStop方法之中的过程。在此期间用户可以从屏幕上看到它,虽然它有可能在前台且不能与用户交互。
3.(foreground lifetime)指Activity处于onResume和与之相对应的onPause方法之中的过程。在此期间Activity在所有其他Activity之上而且能与用户交互。一个Activity能够很流畅的在onResume和onPause之间切换,所以在这两个方法中尽量只做一些轻量级的工作。

你可能感兴趣的:(Android开发艺术探索学习,Activity,生命周期)