四状态:活跃、暂停、停止、销毁。
当Android中Activity在运行的时候,Activity的活动状态由Android和Activity栈的形式管理。当前活动的Activity位于栈顶。
随着不同应用的运行,每个Activity都可能在活动状态和非活动状态之间切换。
活跃:用户启动,在前台运行,可获得焦点;
暂停:运行且可见,但是被某通知或者事件覆盖掉了,用户可以看到activity但是不能与之交互,不能获得焦点;
停止:被启动的其他activity隐藏掉了,应用程序无法向用户展示任何有意义的内容,失去焦点;
死亡:activity结束,或者activity的dalvik进程结束,可能是因为内存不足或者其他原因。
在activity的生命周期中,以下方法会被回调:
onCreate(Bundle savedStatus):创建activity时被回调;
onStart():启动activity时被回调;
onRestart():重启activity时被回调:
onResume():恢复activity时被回调:
onPause():暂停时被回调:
onStop():停止activity时被回调;
onDestroy():销毁activity时被回调。
开发activity的时候,可以根据需要选择性的覆盖指定方法,最常见的是覆盖onCreate()方法,用于对该activity的初始化。
当然,也可以覆盖onPause()方法,暂停该activity去做其他的事情。
代码实例:
@Override public void onSop() { super.onStop(); //TODO SOMETHING }
onCreate()和onDestroy():
activity首次启动的时候,使用一个null参数调用onCreate();
activity已经运行,如果在随后的某个时刻被结束,将使用来自onSaveInstanceState()的Bundle作为参数调用onCreate(),但是如果是将activity设置为不同的手机状态提供不同的资源,那么将重新创建activity并且调用onCreate()。这都是需要一次性完成的操作。
生命周期的另外一端,activity关闭时会调用onDestroy(),这可能是因为activity调用了finish()来完成activity,也可能是内存不够需要关闭activity。
onDestroy()其实就是为了释放在onCreate()中获得的资源。
onStart()、onRestart()和onStop():
activity在前台运行的时候,可能是因为他首次启动,也可能是在被某个activity或者呼入电话隐藏了以后再次被调用回到前台,这样就需要onStart();
停止后重新启动activity,将调用onRestart()方法;
停止activity将要调用onStop()方法。
onPause()和onResume():
在activity被启动后,不管是首次还是隐藏后的启动、还是停止后的启动,回到前台之前要调用onResume()。
可以在此时通过用户上一次查看activity之后可能发生的操作来刷新的一次UI;.
但是,如果要用户远离activity的任何操作,那么要onPause(),而撤销在onResume()中的操作,比如停止后台线程,释放所获得的独占访问资源.
调用onPause()后,Android可以在任何时候结束activity的进程。
如果activity能够保存下来应用程序实例的状态是最好的,这样方便应用程序间进行切换。
实例状态的保存应该由onSaveInstanceState()处理。它提供一个Bundle,activity可以向bundle填充需要的任何数据(计算器显示的数据等),此方法实现需非常快,放入数据快速退出。
该实例状态在onCreate()和onRestoreInstanceState()中再次提供。重新需要获得activity的状态时,这两调用可以根据具体情况用一个。
Activity与severlet的相似之处:
都向用户呈现界面;都继承系统的基类;开发后都需要进行配置;他们的方法都需要系统以回调的方式来调用;都有各自的生命周期,各自的生命周期都由于外部负责管理;
都不哼直接相互调用,不能直接进行数据交换,activity之间的数据交换需要借助于Bundle;activity最终会以窗口的形式呈现,但是servlet向浏览者生成文本响应;activity的本质
是通过各种界面组件搭建界面;activity之间的跳转实现由Intent意图来控制,servlet需要用户请求才能实现。