一、Android生命周期
![](http://hi.csdn.net/attachment/201202/2/0_1328176148ZplM.gif)
public class Activity extends ApplicationContext {
protected void onCreate(Bundle savedInstanceState);
创建Activity时调用。注意这里的参数savedInstanceState,Bundle类型是一个键值对集合。由于前面已经说到的手机应用的特殊性,一个Activity很可能被强制交换到后台(交换到后台就是指该窗体不再对用户可见,但实际上又还是存在于某个 Task中的,比如一个新的Activity压入了当前的Task从而“遮盖”住了当前的 Activity,或者用户按了Home键回到桌面,又或者其他重要事件发生导致新的Activity出现在当前Activity之上,比如来电界面),而如果此后用户在一段时间内没有重新查看该窗体(Android通过长按Home键可以选择最近运行的6个程序,或者用户直接再次点击程序的运行图标,如果窗体所在的Task和进程没有被系统销毁,则不用重新加载Process, Task和Task中的Activity,直接重新显示Task顶部的Activity,这就称之为重新查看某个程序的窗体),该窗体连同其所在的 Task和Process则可能已经被系统自动销毁了,此时如果再次查看该窗体,则要重新执行 onCreate事件初始化窗体。而这个时候我们可能希望用户继续上次打开该窗体时的操作状态进行操作,而不是一切从头开始。例如用户在编辑短信时突然来电,接完电话后用户又去做了一些其他的事情,比如保存来电号码到联系人,而没有立即回到短信编辑界面,导致了短信编辑界面被销毁,当用户重新进入短信程序时他可能希望继续上次的编辑。这种情况我们就可以覆写Activity的 void onSaveInstanceState(Bundle outState)事件,通过向outState中写入一些我们需要在窗体销毁前保存的状态或信息,这样在窗体重新执行onCreate的时候,则会通过 savedInstanceState将之前保存的信息传递进来,此时我们就可以有选择的利用这些信息来初始化窗体,而不是一切从头开始。
protected void onStart();
Activity被用户可见时调用
protected void onRestart();
重新启动Activity时调用,该活动仍在栈中,而不是启动新的活动
protected void onResume();
Activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用)
protected void onPause();
Activity被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的
protected void onStop();
Activity被停止并转为不可见状态及后续的生命周期事件时调用
protected void onDestroy();
Activity被完全从系统内存中移除时调用
}
二、举例说明
在FirstActivity中定义一个文本和一个按钮,点击此按钮,跳转到SecondActivity。在DDMS中观察Activity方法执行的情况如下:
刚启动时:
The First Activity ---->onCreate
The First Activity ------>onStart
The First Activity ------>onResume
点击按钮,跳转到SecondActivity时:
The First Activity ---->onPause
The Second Activity ---->onCreate
The Second Activity ---->onStart
The Second Activity ---->onResume
The First Activity ---->onStop
点击返回到FirstActivity时:
The Second Activity ---->onPause
The First Activity ---->onRestart
The First Activity ---->onStart
The First Activity ---->onResume
The Second Activity ---->onStop
The Second Activity ---->onDestoy