Android项目实践之菜鸟养成(五)用户体验之Android活动的生命周期

文章建议:


因为这部分内容对于一个初学者来说,可能稍微比较难理解,但是要多看,虽然写的文章靠前,但是以后我们每做一个实例,都会加深这部分的理解.建议一段时间之后就回过头来看看这篇文章,理解的深度就不同了.


更好的理解活动的生命周期,可以写出更加流畅的程序,也就是你将拥有很好的用户体验。


我们每启动一个新的活动,就会覆盖在原活动之上。这一点非常重要,在这个项目中经常有这样的需求。比如额外弹出一层,需要移动一下layout中xml文件中的显示顺序,以后会提到实例。


点击back键实际是销毁最上面的活动,所以下面的活动就会显示出来。


如何更好的理解活动的显示方式呢?其实Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里活动的集合,也被称返回栈。栈是一种后进先出的数据结构,每当我们启用一个新活动,它会进入返回栈且处于栈顶的位置。每当我们按下返回键或者调用finish()方法就会销毁处于栈顶的活动,让其出栈,那么前一个入栈的活动就会处于栈顶的位置。(如果你觉得不好理解,可以将栈理解成一个管子或者一个杯子,是不是就很好理解了呢?)


活动状态:

1. 运行状态:

当一个活动处于返回栈的栈顶的位置,就是处于运行状态。


2. 暂停状态:

一个活动不再处于栈顶的位置,但是仍然可见时,就进入了暂停状态。


3. 停止状态:

一个活动不再处于栈顶的位置,并且完全不可见的时候,就进入了停止状态。系统仍然会对这种活动保存相应的状态和成员变量,但是并不可靠,当其他地方需要内存的时候,很可能处于停止状态的活动首先被系统回收。


4. 销毁状态:

当一个活动从返回栈中移除后就变成了销毁状态。系统最倾向于回收处于这个状态的活动,从而保证手机内存的充足。


活动的生存期:


onCreate().

每个Activity都要重写这个方法,它会在活动第一次被创建的时候调用。这个方法适合做一些初始化的操作,比如加载布局,绑定事件等。


onStart().这个方法在活动由不可见变为可见的时候调用。


onResume():这个方法在活动准备好和用户交互的时候调用。此时的活动一定位于返回栈栈顶的位置,且处于运行状态。


onPause():这个方法在系统准备去启动或者回复另一个活动的时候调用。在这个方法中奖一些消耗CPU的资源释放掉,以及保存一些关键数据,关键要点执行这个方法要快,否者会影响新的栈顶活动的使用。


onStop()这个方法是活动完全不可见的时候调用。它和onPause()方法的主要区别在于,如果新活动是一个对话框的活动,那么onPause()方法会得到执行,而onStop()方法并不执行.


onDestroy()这个方法在活动被销毁之前调用,之后的活动状态变为销毁状态. 一般在这个方法中完成释放内存的动作.


onRestart()这个方法在活动由停止状态变为运行状态之前调用,也就是活动被重启了.


以上方法中,除了onRestart()方法,其他都是两两相对的.


活动又可以分为3种生存期.


1. 完整生存期: 活动在onCreate()方法和onDestroy()方法之间所经历的. 

2.可见生存期:活动在onStart()方法和onStop()方法之间所经历的. 活动对用户是可见的,即便有可能无法与用户进行交互. 我们可以通过这两个方法,合理地管理那些对用户可见的资源.

比如在onStart()方法中对资源进行加载,而在onStop()方法中对资源进行释放,从而保证停止状态的活动,不会占用过多的内存.


3.前台生存期. 活动在onResume()方法和onPause()方法之间所经历的就是前台生存期. 前台生存期,活动总是处于运行状态的.此时的活动是可以和用户进行交互的,我们平时看到和接触最多的就是这个状态下的活动.










  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值