Android开发——Activity(活动)的生命周期.docVIP

Android开发——Activity(活动)的生命周期.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android开发——Activity(活动)的生命周期,android开发生命周期,android开发activity,android生命周期,androidview生命周期,android生命周期详解,android的生命周期,android生命周期图,android广播生命周期,android线程生命周期

Android开发——Activity(活动)的生命周期 一、前言   正确理解Activity的生命周期是非常重要的,只有正确理解Activity的生命周期,才能确保应用程序提供一个符合逻辑的的用户体验以及正确管理应用程序本身的资源。Android 中的应用程序并不能管理自身的生命周期,而是由系统统一管理的,当然Activity也是这样子的。在运行时管理以及是否结束Activity进程,Activity的状态决定了应用程序的优先级。反过来,程序的优先级也影响着在运行时是否会终止Activity以及保持Activity持续运行。   二、活动栈   活动在栈中的位置决定了活动状态。当一个新的活动启动时,这个活动就会被当作前景屏幕,并被放到活动栈的栈顶。当用户触发“返回”事件或者前景活动关闭时,下一个活动就会移到栈顶并激活。如下图所示:   图1 Android的Activity栈结构图   之前说过,Android中应用程序的优先级是由其最高优先级的组件(一般就是Activity)决定的。因此当Android需要终止某些应用程序释放系统资源时,就依据活动栈来决定应用程序优先级的高低,从而终止那些低优先级的应用程序。   三、活动状态   激活 当一个活动处于活动栈栈顶,它是可见的,可聚焦的,可接受用户的输入。Android会试图不惜一切代价,甚至是终止处于栈底的活动来回收资源,以保证栈顶活动对资源的需求。当有新的活动被激活,这个活动就会被暂停或者停止。 暂停  活动可见,但是不能聚焦,此时活动就处于暂停状态。当活动暂停时无法接受用户事件。在极端的情况下,Android会终止一个处于暂停状态的活动,来回收系统资源。当一个活动被完全覆盖,它就处于停止状态。   停止  当一个活动不可见,它就处于停止状态。活动会将状态和组件信息保留在内存中。当一个活动转入停止状态,我们需要保存数据和UI状态。一个活动关闭或者退出,就进入不活动状态。   不活动(睡眠)  活动被关闭后,在重新启动之前就处于不活动状态。此状态的Activity并不会存在活动栈中,在显示和使用之前需要重新启动。   Activity 状态的改变是不确定的,这是完全由Android的内存管理器控制的。Android会事先关闭那些含有处于睡眠状态,停止状态甚至是暂停状态活动的应用程序。为了提供一个良好的用户体验,Activity状态的改变对用户来说应该是透明的,所以当Activity进入暂停和停止状态,保存UI状态和持久化数据是很重要的。一旦活动重新激活,则恢复相关数据。   四、监听活动状态变化   为了确保对活动状态变化作出正确的响应,Android提供一个系列的事件控制器,监听活动的在整个生命周期的状态变化。活动的生命周期进一步细化,可以分为:全周期(Full Lifetime)可视期(Visible Lifetime)激活期(Active Lifetime),如下图所示:   图1 活动的生命周期 如上图所示,Activity状态的改变都会触发对应的方法。   Full Lifetime 全周期介于调用 onCreate 与 onDestroy 之间。在一些情况下,终止一个活动并不调用 onDestroy 。Activity通过调用 onCreate 来初始化用户界面,数据,启动服务以及线程。onCreate 方法有个Bundle对象参数,这个参数含有最后一次调用 onSaveIntanceState 保存的UI状态数据。我们可以在 onCreate 中利用这个参数来恢复UI状态数据,或者重写 onRestoreInstanceState 。重写 onDestroy 释放资源,关闭数据库等操作。   为了写出比较高效的代码,有个比较好的建议是避免创建短期对象。快速的创建和销毁对象容易增加碎片回收线程的压力,这样会直接影响用户体验。   Visible Lifetime 可视期介于调用 onStart 与 onStop 之间。此时Activity是可见的,但是不能响应用户事件。一个Activity在其生命周期中是有可能经历多个可视期的。在非常极端的情况下,系统也有可能终止一个处于可视期的活动,这种情况很少见。onStop 方法通常用于暂时或者停止那些用来更新UI的动画,线程,定时器,服务等,所以当活动不可见的时占用的系统资源是很少的。当活动由不可见状态转化为可见状态时,在 onStart 中再启动相关的线程和服务。onStart 和 onStop 同样也用来注册和取消注册(unregister)那些用来更新UI的广播接收者。在活动不可见时我们需要取消注册接受者(Receivers),特别是那些支持目的动作(Intent)以及更新UI的接收者。   Activity L

文档评论(0)

xingkongwd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档