不同情况下的回调
  • 我们打开应用时先后调用了onCreate()->onStart()->onResume
  • 当我们按BACK键时,我们这个应用程序将结束,这时候我们将先后调用onPause()->onStop()->onDestory()
  • 当我们打开应用程序后按HOME的时候,Activity先后调用了onPause()->onStop()这两个方法,这时候应用程序并没有销毁。
  • 而当我们再次启动应用程序时,则先后分别执行了onRestart()->onStart()->onResume()三个方法
  • 在Activity1中启动一个全屏显示的Activity2,注意Activity1中的顺序,onPause()->onCreate()->onStart()->onResume->onStop()
  • 点击BACK健,从Activity2返回Activity1时,注意Activity2中的顺序,onPause()->onRestart()->onStart()->onResume->onStop()->onDestory()
  • 在Activity1中启动一个对话框或透明样式的Activity2,并不会调用Activity1的onStop方法
  • 在Activity1中弹出一个对话框并不会触发生命周期中的任何方法
  • 如果我们将finish()调用直接放在onCreate方法里,onCreate()->onDestory()
  • 如果我们将finish()调用直接放在onStart方法里,onCreate()->onStart()->onStop()->onDestory()
常用设置
  • 对话框样式 android:theme="@android:style/Theme.Dialog"
  • 透明样式 android:theme="@android:style/Theme.Translucent"
  • 忽略屏幕朝向,软键盘,屏幕大小等对activity生命周期的影响  android:configChanges="orientation|keyboardHidden|screenSize"
  • 屏幕只能横向排列,不能切换  android:screenOrientation="landscape"

回调方法应该干些什么

1、onCreate
最重要是在里面调用setContentView,还可以在里面初始化各控件、设置监听、并初始化一些全局的变量。
因为在Activity的一次生命周期中,onCreate方法只会执行一次(和onDestory一样啦,一个是生,一个是灭)。在Paused和Stopped状态下恢复或重启的下,这些控件、监听和全局变量也不会丢失。
 
还可以在onCreate执行数据操作,比如从Cursor中检索数据等等,但是如果你需要每次进入这个Activity时都能更新数据,那么最好放在onStart里面(这个需要根据实际情况来确定)。
 
2、onDestory
在onDestory中确定某些资源是否已经被释放,做一些【最终】的清理工作,比如若在onCreate中开启的某个线程,那么就要在onDestory中判断它是否结束了,如果没有,就结束它。

白注:onDestory不一定会被执行,如被一些清理工具强制清理之后可能并没有调用onDestory方法。

3、onStop
Activity进入到Stopped状态之后,它极有可能被系统所回收,在某些极端情况下,系统可能会直接杀死应用程序的进程,而不是调用onDestory方法回收Activity所占用的内存,也就是说onDestory方法可能不会被调用。所以我们需要在onStop方法中尽可能的释放那些用户【暂时】不需要使用的资源,防止内存泄露。
尽管onPause在onStop之前执行,但是onPause只适合做一些【轻量级】的操作,更多的耗时耗资源的操作还是要放在onStop里面,比如说对数据保存。
 
4、onStart和onRestart
若是在onStop方法里面释放了一些资源,那么我们【重启】这些资源的操作应该放在onStart方法里面(因为onCreate之后也需要开启这些资源)。若是仅Stopped之后才引发的需要单独操作的代码,就可以放在onRestart里面(即onCreate之后并不需要开启)。
 
5、onResume和onPause
onPause和onResume中做的操作,其实意义上和onStart和onStop差不多,只不过是要更【轻量级】的,因为onPause不能阻塞转变到下一个Activity。
比如:停止动画、取消broadcast receivers。当然相应的,需要在onResume中重启或初始化等等。

Activity 【生命周期】的更多相关文章

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

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

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

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

  3. Android Activity生命周期

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

  4. Android Activity生命周期详讲

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

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

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

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

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

  7. 安卓activity生命周期

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

  8. Activity生命周期 onCreate onResume onStop onPause (转)

    Android应用开发提高系列(6)——Activity生命周期 onCreate 和 onResume 在程序启动时候都会启动, 所有有些需要在onCreate onResume中都要实现的功能,之 ...

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

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

  10. Android体系结构及activity生命周期

    Android的系统架构采用了分层架构的思想,如图1所示.从上层到底层共包括四层,分别是应用程序程序层.应用框架层.系统库和Android运行时和Linux内核 Android的系统架构图    每层 ...

随机推荐

  1. action 关联

    <act_window context="{'product_id': active_id}" id="act_stock_product_location_ope ...

  2. 在Adobe Reader中保存PDF表单数据的方法

    通常,Adobe Reader 用户填写表单后,是无法保存所填表单的副本的.但是,对于 Reader 8 和更高版本的用户,您可以扩展其权限,使他们可以完成此操作.如果您使用的是 Acrobat Pr ...

  3. 导出Excel后其他按钮失效

    在SharePoint中,当在页面上点击Export to Excel按钮后,第一次它能实现该功能,当再次点击该按钮时,页面上的所有按钮将失效,仅仅再次刷新该页面时按钮才会有效,首先想到出现该问题肯定 ...

  4. ThinkPHP 3.2 模板使用函数

    {$name|md5|strtoupper|substr=0,3} 编译后的结果是: <?php echo (substr(strtoupper(md5($name)),0,3));?> ...

  5. Yeoman:适合现代Web应用的现代工作流

    Yeoman:适合现代Web应用的现代工作流   Yeoman是Google的团队和外部贡献者团队合作开发的,他的目标是通过Grunt(一个用于开发任务自动化的命令行工具)和Bower(一个HTML. ...

  6. unity 基础学习 transform

    unity  基础学习   transform 1.unity采用的是右手坐标系,X轴右手为+,Y轴向上为+,Z轴朝里为+; 但是我们从3D MAX中导入模型之后,发现轴向并没有遵从这个原理, 其实是 ...

  7. Delphi重载,覆盖,多态

    一.override 重载 type TFigure = class procedure Draw; virtual;//(我的理解是)父类中可以使用父类的,子类中使用子类的.与“四”是有区别的. e ...

  8. Linux Kernel 空指针逆向引用拒绝服务漏洞

    漏洞名称: Linux Kernel 空指针逆向引用拒绝服务漏洞 CNNVD编号: CNNVD-201306-449 发布时间: 2013-07-01 更新时间: 2013-07-01 危害等级:   ...

  9. (转载)用PHP正则表达式清除字符串的空白

    (转载)http://www.chinaz.com/program/2009/0220/67569.shtml 我们经常会处理来自用户输入或从数据库中读取的数据,可能在你的字符串中有多余的空白或制表符 ...

  10. 动态规划 计数型DP:dobra

    令人愉快的单词(dobra)时间限制: 0.1 秒空间限制: 32 MB [问题描述]Lea 在她的一生中碰到过很多单词.其中的很大一部分都使她不愉快.作为补偿,她开始创造一些愉快的单词. Lea 通 ...