Android应用开发提高系列(6)——Activity生命周期

onCreate 和 onResume 在程序启动时候都会启动,

所有有些需要在onCreate onResume中都要实现的功能,之需要放在onResume中就可以了。
这样还可以避免部分错误,比如在两个事件中都弹出了提示框,这么就会提示两次。

 

前言

  四大应用程序组件中Activity是最常用的,也是必须掌握的一个组件。这里分几章梳理归纳一些实用的知识点与大家分享。

正文

  一、配图及说明

    Activity主要的三种状态:

      Running(运行):在屏幕前台(位于当前任务堆栈的顶部)

      Paused(暂停):失去焦点但仍然对用户可见(覆盖Activity可能是透明或未完全遮挡)

      Stopped(停止):完全被另一个Activity覆盖

  二、事件方法链

    2.1  进入Activity

      onCreate  -> onStart  ->  onResume

    2.2  BACK键

      onPause -> onStop -> onDestroy

    2.3  HOME键
      Home键退出:onPause -> onStop

      Home键回来:onRestart ->  onStart -> onResume

    2.4  休眠/恢复

      休眠:  onPause

      恢复:  onResume

    2.5  旋转屏幕

      未设置android:configChanges:

        onPause  ->  onStop  ->  onDestory  ->  onCreate  -> onStart  ->  onResume

      设置了android:configChanges="orientation|keyboardHidden":

          不会触发生命周期方法,参见文章这里

    2.6  来电

      来电,显示来电界面:

        onPause  ->  onStop

      关闭电话界面,重新回到当前Activity:

        onRestart ->  onStart -> onResume

    2.7  其他Activity

      进入下一个Activity:

        onPause  ->  onStop

      从其他Activity返回至当前Acitivity:

        onRestart ->  onStart -> onResume

  三、与Activity生命周期结合的应用场景

    3.1  与广播(Broadcast)结合

      在onResume注册广播(registerLinstener),在onPause注销广播(unregisterLinstener)。 例如:

      做"摇一摇"功能(传感器)、监听网络变化,就可以在onResume中注册监听,在onPause里注销掉,已节省资源提高效率。

    3.2  与服务(Service)结合

      在onStart绑定服务(bindService),在onStop中取消绑定(unbindService)。 例如:

      需要通过Service定时更新UI上的数据,而Activity的可见周期在onStart与onStop之间,那么就可以再onStart时启动服务,在onStop时停止服务。为了节约系统资源,除了提高用户体验以外,开发人员应尽可能的优化程序。

    3.3  与Cursor结合

      使用managedQuery让Activity帮你管理Cursor的生命周期,不用自己去close。但也有一些问题,补充两篇文章:这里1这里2

    3.4  释放资源

      可以在onDestory中释放一些资源。比如可以在onDestory时调用MediaPlayer的release。

  四、注意

    4.1  所有Activity生命周期方法的实现都必须先调用其父类版本。

    4.2  由于Activity经常会暂停和恢复之间切换,所以onResume和onPause这两个方法应当是轻量级的。

    4.3  在系统再某种紧急情况下需要回收内存,onStop、onDestory可能不会被调用,因此需要在onPause中把需要长期保存的数据保存起来。

转自:http://laokaddk.blog.51cto.com/368606/1340614

Activity生命周期 onCreate onResume onStop onPause (转)的更多相关文章

  1. Android 四大组件之Activity生命周期

    写这篇博文之前,已经对android有一定的了解和认识.这篇博文主要讲述android的Activity的生命周期,这是android开发者必须掌握的知识.android的Activity组件拥有7个 ...

  2. [转]: 两分钟彻底让你明白Android Activity生命周期(图文)!

    转自:http://blog.csdn.net/android_tutor/article/details/5772285 大家好,今天给大家详解一下Android中Activity的生命周期,我在前 ...

  3. Activity生命周期(深入理解)

    今天看到一篇大神总结Activity的文章,内容甚为详细,特此转载http://www.cnblogs.com/lwbqqyumidi/p/3769113.html Android官方文档和其他不少资 ...

  4. Android Activity生命周期

    从android api文档摘抄出来的activity生命周期图如下: Activity有如下四种状态 a.活动状态  activity处于屏幕前台,获取到了焦点可以和用户进行交互,同一时刻只有一个a ...

  5. Android Activity生命周期详讲

    管理 Activity 生命周期 通过实现回调方法管理 Activity 的生命周期对开发强大而又灵活的应用至关重要. Activity 的生命周期会直接受到 Activity 与其他 Activit ...

  6. android Activity生命周期(设备旋转、数据恢复等)与启动模式

    1.Activity生命周期     接下来将介绍 Android Activity(四大组件之一) 的生命周期, 包含运行.暂停和停止三种状态,onCreate.onStart.onResume.o ...

  7. android开发------Activity生命周期

    这几天工作比较忙,基本没有什么时间更新播客了. 趁着今晚有点时间,我们来简单说一下什么是Activity生命周期和它们各阶段的特征 什么是生命周期 在还没有接触android开发的时候,听到有人说Ac ...

  8. 安卓activity生命周期

    相信不少朋友也已经看过这个流程图了,也基本了解了Activity生命周期的几个过程,我们就来说一说这几个过程. 1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法, ...

  9. Android总结篇系列:Activity生命周期

    Android官方文档和其他不少资料都对Activity生命周期进行了详细介绍,在结合资料和项目开发过程中遇到的问题,本文将对Activity生命周期进行一次总结. Activity是由Activit ...

随机推荐

  1. 【leetcode】Path Sum II

    Path Sum II Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals ...

  2. jQuery DataTables && Django serializer

    jQuery DataTables https://www.datatables.net 本文参考的官方示例 http://datatables.net/release-datatables/exam ...

  3. wxpython 基本的控件 (文本)

    wxPython 工具包提供了多种不同的窗口部件,包括了本章所提到的基本控件.我们涉及静态文本.可编辑的文本.按钮.微调.滑块.复选框.单选按钮.选择器.列表框.组合框和标尺.对于每种窗口部件,我们将 ...

  4. ali笔试总结

    2012 http://blog.csdn.net/qunqin/article/details/6853956 2014 http://blog.csdn.net/fangjian1204/arti ...

  5. linux下用cronolog分割apache日志

    linux下用cronolog分割apache日志,大神莫拍砖,菜鸟留一记录,小白请默默转载.连linux登陆和vi编辑都不会的,请默默关闭此页面.入正题 说明:淡绿色底的为linux命令,其他的为备 ...

  6. win7 ubuntu10.04双系统,重装win7后,修复双启动项

    进入ubuntu的liveCD(即在试用ubuntu里),在终端里操作 首先要找到自己的ubuntu系统挂载在那个sda下面.可以用sudo fdisk -l 这个命令.然后: 1. sudo -i ...

  7. 【leetcode】Number of 1 Bits (easy)

    做太多遍了,秒杀. class Solution { public: int hammingWeight(uint32_t n) { ; ), num++); return num; } };

  8. 【processing】小代码5

    3D void setup() { size(,,P3D); } void draw() { background(); lights(); noStroke(); translate(,,-); r ...

  9. 【EM】代码理解

    本来想自己写一个EM算法的,但是操作没两步就进行不下去了.对那些数学公式着实不懂.只好从网上找找代码,看看别人是怎么做的. 代码:来自http://blog.sina.com.cn/s/blog_98 ...

  10. 使用Apache+Dreamweaver(或者H-builder)搭建php开发环境

    使用得工具说明 php+Apache服务器+Dreamweaver+mysql数据库 下载安装好wamp,可以在网上直接百度下载,为了方便,我给放个百度云的链接.wamp下载:链接:http://pa ...