分类: Java
2012-08-26 08:48:14
在android中,每一个anctivity都有着自己的生命周期,对于android来说,所有的activity构成了一个activity栈,每当一个activity被调用时,它就被压入栈顶,前一个activity就会处于pause或者stop状态。这时候前一个activity并不会消失,当前activity被destroy时弹出栈之后,前一个activity将重新被激活。
如图:
Android的官方文档上是这样说的:
Activity有很多的内建的方法。我们平时的***.java虽然继承activity但是一般不会覆写这些方法,因此我们可能不太了解。
但是对于activity的生命周期却是非常重要的。
这些函数的官方解释在上图都很清楚。
说说我个人的理解,首先一个activity刚开始显示的时候要调用onCreate(),onStart(),onResume()这三个方法,我个人理解呢,这个过程应该是一个“创建->显示->设为当前”的一个过程。onCreate()用来创建的时候调用。Onstart()用来显示activity。而onResume()用来将这个activity设置为当前与用户在交互中的activity。
相对应的,onStop()是当activity被完全覆盖时,没有显示的部分的时候调用的。所以与onStart(),onRestart()是对应的。当一个activity弹出另一个activity并且完全覆盖当前的activity的时候,就是这种情况。
同样,onPause()与onResume()对应,只当这个activity并不是与用户交互的activity但是并没有被完全覆盖(仍然需要显示所以不能调用onStop())的时候。调用onPause()。调用之后,因为activity已经创建没有销毁,而且一直显示着,只需要一个onResume()就可以恢复。当一个activity弹出对话框的时候,就是这种情况。
最后一个onDestroy()应该就不用解释了,这个方法就是用来完全销毁一个activity。对应的也就是onCreate()这个方法,有创建就要有销毁,有开始就要有结束。
Android文档给出了一个activity生命周期的流程图:
这个图中有一点上边没有说到。那就是当系统资源不够用了的时候,android为了释放系统资源,会把当前处于onStop()状态的某些activity杀掉。也就是onDestroy()。以此来释放一些系统的资源和内存。
当用户重新把活动activity退回到这个kill掉的activity时,系统再重新调用onCreate(),onStart(),onResume()来重新启动这个activity并使之与之前一样。
而处于onPause()状态的activity是不能像这样随意被结束的。
本文参考:《android SDK reference》