Chinaunix首页 | 论坛 | 博客
  • 博客访问: 180933
  • 博文数量: 13
  • 博客积分: 395
  • 博客等级: 一等列兵
  • 技术积分: 364
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-05 20:06
文章分类
文章存档

2013年(2)

2012年(11)

分类: Java

2012-08-26 08:48:14

android中,每一个anctivity都有着自己的生命周期,对于android来说,所有的activity构成了一个activity栈,每当一个activity被调用时,它就被压入栈顶,前一个activity就会处于pause或者stop状态。这时候前一个activity并不会消失,当前activitydestroy时弹出栈之后,前一个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

阅读(1874) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~