Android Dev Notes - 9 - Activity生命周期

其实Activity生命周期是最基础的东西,每个做android的开发人员必须知道,放在后面写的原因是因为我之前对它的理解不是很深,在堆代码到一定时期时,有必要再回来看一下,因为很重要!在android的学习过程中,我犯了所有学习者都会犯和不会犯的错。

 

Let‘s Start!

 

一般介绍Activity生命周期都需要讲到下面几个方法,因为它来自于android的官方doc。以下这段描述非常关键 ,因为它涉及如何利用Activity生命周期来完成我们自己需求,其中有一些我们可以能会犯的错误

 

* onCreate() - 创建视图

适合用户加载布局文件,获取控件, 绑定数据

* onStart() - 在activity显示前,调用该函数

适合计算布局大小,因为不久你会发现在onCreate中想要getHeight()来获取View的大小会返回0,不显示,也是不建议这么做的,因为在* * onCreate()中活动和Activity都没有完全被创建,如果我们想获取大小,应该放在这里,onStart()中,如此我们可以正确的获得界面数据。在界面还没有提交给用户显示时,就可以修改界面。

* onRestart() - 在进程被Stop以后重新启动前,调用该函数

* onResume() - 在用户开始于Activity交互之前,调用该函数

* onPause() - 在启动一个活动的时候,调用它

适合保存当前数据

* onStop() - 在Activity不再可见时,调用它

* onDestroy() - 在Activity销毁之前,调用它

但是更建议,你在疑惑时查看官方DOC:http://developer.android.com/guide/topics/fundamentals/activities.html

 

现在我们写一段代码来验证,Activity的生存周期。

Activity01的代码

Activity02的代码

 

 

现在我们可以快乐地Debug,然后看日志了。

在logCat中增加filter,设置Filter name = LocalDebug, by Log Tab = DEBUG.

然后,我们行动吧!

 

1.程序加载

05-13 08:21:33.945: DEBUG/DEBUG(376): Activity01->onCreate
05-13 08:21:33.945: DEBUG/DEBUG(376): Activity01->onStart
05-13 08:21:33.955: DEBUG/DEBUG(376): Activity01->onResume

* Activtity01开始创建,然后开始,然后送给用户接受交互信息

 

2.点击Go Activity02

05-13 08:22:51.875: DEBUG/DEBUG(376): Activity01->onPause
05-13 08:22:52.035: DEBUG/DEBUG(376): Activity02->onCreate
05-13 08:22:52.035: DEBUG/DEBUG(376): Activity02->onStart
05-13 08:22:52.035: DEBUG/DEBUG(376): Activity02->onResume
05-13 08:22:52.245: DEBUG/DEBUG(376): Activity01->onStop

* 先暂停Activity01,停止显示,送入后台。

然后再启动Activity02,创建,开始,继续

处理Activtiy01,先送到活动栈的顶端,然后停止进程。

停止Activity01

 

3.点击Go Activity01

05-13 08:24:24.475: DEBUG/DEBUG(376): Activity02->onPause
05-13 08:24:24.616: DEBUG/DEBUG(376): Activity01->onCreate
05-13 08:24:24.625: DEBUG/DEBUG(376): Activity01->onStart
05-13 08:24:24.625: DEBUG/DEBUG(376): Activity01->onResume
05-13 08:24:24.855: DEBUG/DEBUG(376): Activity02->onStop

* 同2.只不过从Activity02转到Activtiy01而已

 

4.按返回键

05-13 08:27:01.855: DEBUG/DEBUG(376): Activity01->onPause
05-13 08:27:01.875: DEBUG/DEBUG(376): Activity02->onRestart
05-13 08:27:01.875: DEBUG/DEBUG(376): Activity02->onStart
05-13 08:27:01.875: DEBUG/DEBUG(376): Activity02->onResume
05-13 08:27:02.095: DEBUG/DEBUG(376): Activity01->onStop
05-13 08:27:02.095: DEBUG/DEBUG(376): Activity01->onDestroy

* 从Activity01返回Activity02,先暂停Activity01。

重新开始Activity02,开始Activity02,继续Activity02.

停止Activity01,然后终止掉它。

 

5.按返回键

05-13 08:30:16.715: DEBUG/DEBUG(376): Activity02->onPause
05-13 08:30:16.745: DEBUG/DEBUG(376): Activity01->onRestart
05-13 08:30:16.745: DEBUG/DEBUG(376): Activity01->onStart
05-13 08:30:16.745: DEBUG/DEBUG(376): Activity01->onResume
05-13 08:30:16.955: DEBUG/DEBUG(376): Activity02->onStop
05-13 08:30:16.955: DEBUG/DEBUG(376): Activity02->onDestroy

* 同步骤4,只不过这次是终止Activity02。

 

6.按返回键

05-13 08:32:08.695: DEBUG/DEBUG(376): Activity01->onPause
05-13 08:32:08.965: DEBUG/DEBUG(376): Activity01->onStop
05-13 08:32:08.965: DEBUG/DEBUG(376): Activity01->onDestroy
* Activity01先暂停,后停止,然后销毁。

 

7.综述

启新的活动前,先停止当前的活动,然后重启新活动,启动新活动,继续新活动。该活动已经显示给用户了。

然后我们在停止旧的活动,销毁它。

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值