Android Activity 生命周期的透彻理解
2014-03-01 13:41
375 查看
首先看看android developers 网上的activity的生命周期图:
![](https://lh5.googleusercontent.com/UYxzdGSnzQKE1EKXU00d5u06kUmA_sPHHBrjt7ria6OPP0nymujTqR0KWy_TE_lMDyPi-tj3byxAxAwJRiPNbbU4fGSNr6ZvUdSBJYJudYJRiZ2qxT8)
activity启动的时候:onCreate ---> onStart ---> onResume 这个过程不用多说,大家都知道。
这里主要讲讲: 何时onPause, 何时onStop,何时onDestory; 以及恢复的时候,何时onRestart,何时onResume。
为了方便说明这里把当前activity称为MainActivity,其他的activity称为SecondActivity、ThirdActivity等等。
通过上图的我们可以看出activity从running状态跳转到onPause状态的原因是:Another activity comes into the foreground. 也就是说有另外一个actvity被启动并运行了,比如说MainActivity通过startActivity启动了SecondActivity,那么SecondActivity就在ui视图的最顶层了,而MainActivity不再是最顶层的activity了,此时就会onPause了,此时我们依稀还能看到MainActivity,只是MainActivity已经站在他人之后了。
而当MainActivity完全被SecondActivity挡住,完全看不见的时候,此时MainActivity就会onStop了。我们看看上图从onPause到onStop的原因是:the activity is no longer visiable. 也就是说此时MainActivity完全不可见了,从这里我们可以猜测当按下home键的时候,当前activity就会处于onStop的状态。
从actvitiy的生命周期图中,我们可以看出activity是可以停留在onPause和onStop在这两个状态上的,因为可以相应的恢复。
那么何时停留在onPause,何时停留在onStop呢?
下图的MainActivity就是处于onPause状态:
![](https://lh3.googleusercontent.com/gp3pSOUd3t2g0vVcbHA5otBKKg5JshmqTz_1ARUYTmVctLLq9WRSzhhvoo7xwLAhQz4bMpH_sr9gMTcPVFrOxsNf9CfSBgph43qpuWhXC_VyA0S7AOo)
因为这里的second actvity是dialog样式:
<activity android:name=".SecondActivity" android:theme="@android:style/Theme.Dialog">
也就验证了当MainActivity不再在最顶端,但仍然可见的时候,MainActivity就处于onPause状态,此时如果退出(back键)second activity,那么MainActivity就会onResume。
下图的MainActivity就是处于onStop状态(注意,这里的third activity 是在 MainActivity中通过startActivity启动的):
![](https://lh6.googleusercontent.com/28AGdcM0__vAqbT8Fz6sIQnfD73Qp1GvsQA_Wr6yYegC4sGrXK6AtVBJrKUBCqNu1FgOjhSUmyNJ9ZHj6ZsHFt3OJjPj1iOWZoQo_t1AYUOuXKPvwv8)
因为此时MainActivity已经完完全全被Thrid actvity挡住了,完全不可见了,所以MainActivity处于onStop状态,如果此时退出Thrid activity(back键),那么MainActivity就会onRestart().
何时onDestory呢?
当在MainActivity中按back键,退出时,最终就会走到onDestory,或者在代码中调用finish()的时候也会走到onDestroy这一步。
对于activity生命周期图的左侧部分:
![](https://lh3.googleusercontent.com/ugwvHNvd9CbTdaM7ypg_QUmY4TyVhNZhPGJxmowbej3MdKt-LXz-8gQpSCz2Agq12SjAdKJXJnew_K5xueu87qhSsKxvlGDmLOBE2v1oTmCeX5sv9VU)
当MainActivity处于onPause和onStop状态时,当更高优先级的apps需要内存,而此时系统内存不够了,那么android系统就会将MainActivity所在的进程给杀了以释放资源。
当然被杀了之后,想重生,那必须得从头来过: onCreate ---> onStart() ---> onResume().
转自/article/5851803.html
activity启动的时候:onCreate ---> onStart ---> onResume 这个过程不用多说,大家都知道。
这里主要讲讲: 何时onPause, 何时onStop,何时onDestory; 以及恢复的时候,何时onRestart,何时onResume。
为了方便说明这里把当前activity称为MainActivity,其他的activity称为SecondActivity、ThirdActivity等等。
通过上图的我们可以看出activity从running状态跳转到onPause状态的原因是:Another activity comes into the foreground. 也就是说有另外一个actvity被启动并运行了,比如说MainActivity通过startActivity启动了SecondActivity,那么SecondActivity就在ui视图的最顶层了,而MainActivity不再是最顶层的activity了,此时就会onPause了,此时我们依稀还能看到MainActivity,只是MainActivity已经站在他人之后了。
而当MainActivity完全被SecondActivity挡住,完全看不见的时候,此时MainActivity就会onStop了。我们看看上图从onPause到onStop的原因是:the activity is no longer visiable. 也就是说此时MainActivity完全不可见了,从这里我们可以猜测当按下home键的时候,当前activity就会处于onStop的状态。
从actvitiy的生命周期图中,我们可以看出activity是可以停留在onPause和onStop在这两个状态上的,因为可以相应的恢复。
那么何时停留在onPause,何时停留在onStop呢?
下图的MainActivity就是处于onPause状态:
因为这里的second actvity是dialog样式:
<activity android:name=".SecondActivity" android:theme="@android:style/Theme.Dialog">
也就验证了当MainActivity不再在最顶端,但仍然可见的时候,MainActivity就处于onPause状态,此时如果退出(back键)second activity,那么MainActivity就会onResume。
下图的MainActivity就是处于onStop状态(注意,这里的third activity 是在 MainActivity中通过startActivity启动的):
因为此时MainActivity已经完完全全被Thrid actvity挡住了,完全不可见了,所以MainActivity处于onStop状态,如果此时退出Thrid activity(back键),那么MainActivity就会onRestart().
何时onDestory呢?
当在MainActivity中按back键,退出时,最终就会走到onDestory,或者在代码中调用finish()的时候也会走到onDestroy这一步。
对于activity生命周期图的左侧部分:
当MainActivity处于onPause和onStop状态时,当更高优先级的apps需要内存,而此时系统内存不够了,那么android系统就会将MainActivity所在的进程给杀了以释放资源。
当然被杀了之后,想重生,那必须得从头来过: onCreate ---> onStart() ---> onResume().
转自/article/5851803.html
相关文章推荐
- Android Activity 生命周期的透彻理解
- 透彻理解android中Activity生命周期
- Android Activity 生命周期的透彻理解
- Android Activity 生命周期的透彻理解
- Android Activity 生命周期的透彻理解
- Android Activity 生命周期的透彻理解
- Android Activity 生命周期的透彻理解
- Android Activity 生命周期的透彻理解
- Android Activity 生命周期的透彻理解
- Android Activity 生命周期的透彻理解
- Android Activity 生命周期的透彻理解
- Android Activity 生命周期的透彻理解
- Android Activity 生命周期的透彻理解
- android四大组件之一Activity生命周期的理解
- Android 随笔——Activity的生命周期的理解
- 【Android学习总结】之Activity:深入理解、体验Activity的生命周期
- Android-Activity生命周期的理解
- Android理解:Activity状态和生命周期
- Android Activity生命周期理解误区进行分析
- [Android问答] 如何理解Activity生命周期?