Activity 是这样一个程序组件,它为用户提供一个用于任务交互的画面。例如,拨打电话,拍照,发邮件。或者查看地图。每一个activity都被分配一个窗口。在这个窗口里,你可以绘制用户交互的内容。 这个窗口通常占满屏幕,但也有可能比屏幕小,并且浮在其它窗口的上面。
一个应用程序通常由多个activity组成,它们彼此保持弱的绑定状态。典型的,当一个activity在一个应用程序内被指定为主activity, 那么当程序第一次启动时,它将第一个展现在用户面前。为了展现不同的内容,每一个activity可以启动另外一个。 每当一个新的activity被启动,那么之前的将被停止。但系统将会把它压入一个栈(“back stack”即后退栈),当一个新的activity启动,它将被放到栈顶并获得用户焦点。后台栈遵循后进先出的栈机制。所以当用户完成当前页面并按下返回按钮时,它将被pop出栈(并销毁),之前的activity将被恢复。 (关于后退栈的更多讨论在任务和后退栈)
当一个activity因为另一个activity的启动而被停止,那么其生命周期中的回调方法,将会以状态改变的形式被调用。 activity通过它自身状态的改变可以收到多个回调方法。当系统创建,停止,恢复,销毁它的时候。并且每个回调方法都给你做相应处理工作的机会。 例如,当停止的时候,你的activity应当释放比较大的对象,例如网络连接,数据连接。当你的activity恢复时,你可以请求必须的资源并恢复一些被打断的动作。 这些状态事务的处理就构成了activity的生命周期。
接下来将讨论如何搭建和使用activity,完整讨论activity的生命周期是怎么工作的,这样你就可以合理地管理不同activity状态间的事务处理
-
-
Activity的启动和关闭
-
Activity的启动
-
-
startActivity(intent):启动其它的Activity。
startActivityForResult(intent, requestCode):启动新Activity并得到返回结果
-
-
-
Activity的关闭
-
-
finish():结束当前Activity。
finishActivity(int requestCode):结束当前Activity并返回结果
-
-
Activity的生命周期
-
Activity的生命周期包括4种状态,3个生命周期循环,7个生命周期函数。
图2. 1
实际上就是讲解下面这一张图
图2.2
-
-
四种状态
-
-
-
-
运行状态
当Activity位于栈顶时,此时正好处于屏幕最前方,此时处于运行状态;如此时的FirstActivity正处于运行状态。
图 2.3
暂停状态
当Activity失去了焦点但仍然对用于可见(如栈顶的Activity是透明的或者栈顶Activity并不是铺满整个手机屏幕),此时处于暂停状态,如果图中的FisrtActivity就处于暂停状态:
图2.4
停止状态
当Activity被其他Activity完全遮挡,此时此Activity对用户不可见,此时处于停止状态;当我们在图2.3点击“启动SecondActivity”,此时的SecondActivity非透明的形式,全部覆盖FirstActivity,那么此时的FirstActivity就处于停止状态。
图2.5
销毁状态
当Activity由于人为或系统原因(如低内存等)被销毁,此时处于销毁状态;
图2.6
当我们在图2.6中点击退出,我们在点击退出的事件中调用了this.finish(),那么此时的FirstActivity就处于销毁状态。
四种状态之间的转换图