【www.gdgbn.com--.Net开发】
在android,系统把activities当做一个activity stack进行管理。当一个新的activity被启动时,它将放在这个activity stack的最顶部,然后成为一个running activity. 而上一个activity总是在这个activity的下一层,且将不会再显示到前端直到一个新的activity存在!
一个activity本质上来说包括以下四个状态: 1. 当一个activity在屏幕的前台(foreground)时(同时也在activity stack的顶部)时,这个activity就处在active或running状态。 2. 当一个activity失去了焦点,但是可见(例如:一个新的不是全屏的activity处于activity stack顶部)时,activity处理paused状态. 一个被paused的activity是完全可用的(alive)(这时的activity将保存所有的状态与成员信息且仍处理window manager 的attach范围), 这种状态下的activity在系统极度缺少内存的情况下被系统杀掉! 3. 如果一个activity完全被另一个activity覆盖时,该activity就处理stoped状态。它将仍然保存所有状态与成员信息,但是,它对用户已经不在可见,所以,它的窗口被隐藏了。当系统需要内存时,系统会经常杀掉这种状态的activity。 4.当一个activity处理paused或stopped状态时,系统可以清除这个activity的内存而不调用这个activity的finish方法或者简单的结束它的进程,当它被再次显示给用户,它需要再次完全启动,并还原到最近的一状态。 下面所说的方法可以理解为activity进入对应状态时会被调用的方法! 下面的一张图说明了activity的状态变化路线图。长方形表示你可以覆盖这些方法,以便在activity状态切换之间执行一定的动作。含有颜色的椭圆表示activity可能经常处于的状态!
一个activity的整个生命周期定义在下面的activity方法中。你可以覆盖这些方法,使得activity在不同状态之间执行一定的动作。所有的activities都将实现oncreate(bundle)方法去完成初始化设置工作,在实现这些方法的过程中,你需要经常调用这些方法的superclass
public class activity extends applicationcontext { protected void oncreate(bundle savedinstancestate); protected void onstart(); protected void onrestart(); protected void onresume(); protected void onpause(); protected void onstop(); protected void ondestroy(); }