不同情况下的回调
  • 我们打开应用时先后调用了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. 最优秀的5个Linux文本编辑器

    from: http://article.yeeyan.org/view/169956/174836 作为不久前举办的比赛的一部分内容,我从那些选出他们最喜欢的Linux文本编辑器的极客读者们那获得了 ...

  2. Ubuntu软件包管理命令全面集锦

    说明:由于图形化界面方法(如Add/Remove... 和Synaptic Package Manageer)比较简单,所以这里主要总结在终端通过命令行方式进行的软件包安装.卸载和删除的方法. 一.U ...

  3. python自动开发之第十二天

    一.数据库的介绍 (1)由多张表组成(2)存取有规则,数据有关联(3)数据量大,被优化 好处:更有效的存取数据 二.关系型数据库管理系统(RDBMS) Oracle,Mysql,Sqlserver,D ...

  4. fragment 学习

    fragment需要id是必须属性 <fragment        android:id="@+id/frg1"        android:name="com ...

  5. Eclipse 代码自动补全

    使用Eclipse开发Android时,发现代码补全功能太差,完全不像VS似的,输入一个字母就出现代码提示. 下面是在Eclipse中实现类似VS代码补全的方法: ①打开Eclipse->Win ...

  6. 设计模式——如何避免在OO设计中违反依赖倒置原则

    1 变量不可以包含具体类的引用.一旦new,就对具体类产生依赖,用工厂模式来避开. 2 类不要派生至具体类.用派生抽象类避开. 3 不要覆盖基类已经实现的方法.基类中已实现的方法应该由所有子类共享.

  7. 接受、online、见刊时,期刊的 IF 都不同,究竟算发几分期刊?

  8. 关于Mysql当中"Got error 134 from storage engine"的解决办法

    今天在开发程序的时候,有一个表, 当调用这个类别时总是调用不出来,很是恼火.后台打印sql语句为: SELECT * FROM `xx_article` WHERE `cid1` =6 LIMIT 0 ...

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

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

  10. datetime和timer的使用(小小幻灯片)

    一:展示图片 每秒换一次图片,一共六十张图片,00-59 二:代码 a,设计代码 namespace timePicture { partial class Form1 { /// <summa ...