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. gitlab 无法查看提交的文件Errno::ENOMEM (Cannot allocate memory - /opt/gitlab/embedded/bin/git):

    gitlab可以成功clone和push,但是提交后的文件却无法查看.从页面上看的话只显示出500错误. 查了下gitlab的日志 tail -f /var/log/gitlab/gitlab-rai ...

  2. C++ 获取vector容器最后一个元素

    声明:vector<T>  vec; 方法一: return vec.at(vec.size()-1); 方法二: return vec.back(); 方法三: return vec.e ...

  3. 请不要用SECONDS_BEHIND_MASTER来衡量MYSQL主备的延迟时间【转】

    本文来自:http://www.woqutech.com/?p=1116 MySQL 本身通过 show slave status 提供了 Seconds_Behind_Master ,用于衡量主备之 ...

  4. intel 面试总结

    昨天面了intel的Android部门,基无意外,面试的效果不是很好,很多问题没有回答上来,看来如果要进intel这种大公司光靠SJTU光环是远远不够的,必须要有真才实学.面试的还是一位交大学长,本科 ...

  5. vs2010 快捷键大全

    vs2010 快捷键大全 VS2010版快捷键 Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 ...

  6. 【linux】学习2

    鸟哥那本书的第6章 文件权限: ^                ^     ^      ^        ^              ^                 ^ 1         ...

  7. 经典.net试题

    经典.net面试题目 1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private :   私有成员, 在类的内部才可以访问. pr ...

  8. XMPP框架下微信项目总结(5)花名册获取(好友列表)

    ---->概念 ---->添加花名册 ps:添加花名册,启动: 客户端发送请求到服务器获取好友列表信息,同时在项目中创建数据表,并保存好友列表到数据表中. ---->获取服务器保存好 ...

  9. class-dump获取iOS私有api

    转自:http://blog.csdn.net/sunyuanyang625/article/details/41440167 获取各类iOS私有api 安装工具class-dump 资源地址http ...

  10. iOS - HTTPS接口加密和身份认证

    为什么要使用HTTPS代替HTTP HTTPS和HTTP的区别 https协议需要到CA申请证书,一般免费证书很少,需要交费. http是超文本传输协议,信息是明文传输,https则是具有安全性的SS ...