不同情况下的回调
  • 我们打开应用时先后调用了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. Day11 线程、进程、协程

    创建线程第一种:import threadingdef f1(arg): print(arg) t = threading.Thread(target=f1, args=(123,))#t.start ...

  2. iscc2016-basic-心灵鸡汤

    用winhex打开发现 ISCCCongratulations! You need remember: DEath IS JUST A PaRT oF lIFE,sOMeTHInG wE'RE aLL ...

  3. DELL 720XD和R820玩赏

  4. Delphi调用WINAPI时到底应该是指针还是结构体(注意是Delphi变量本身就是指针)

    看MSDN,GetWindowRect的说明如下: BOOL WINAPI GetWindowRect( _In_  HWND   hWnd, _Out_ LPRECT lpRect // 注意,没* ...

  5. Android Task 相关

    在日常开发过程中,只要涉及到activity,那么对task相关的东西总会或多或少的接触到,不过对task相关的一些配置的作用一直理解的还不是很透彻,官方文档在细节上说的也不够清楚,要透彻理解还是得自 ...

  6. 5. repeater图片放大

    当把鼠标放在一张小图片上时,图片会自动放大,离开时它变小. 我们在静态页面中可以用jQuery来操作.如下为html中的源码. <!DOCTYPE html PUBLIC "-//W3 ...

  7. C++ STL的各种实现版本

    ANSI/ISO的C++ STL规范版本正式通过以后,各个C++编译器厂商就可以依照标准所描述的原型去实现C++ STL泛型库,于是出现多种符合标准接口,但具体实现代码不同的泛型库,主要有: HP S ...

  8. 根据body的内容 查找h2标签的@class="subtitle"的值

    <pre name="code" class="html"><body class="api jquery listing" ...

  9. WordPress Citizen Space插件跨站请求伪造漏洞

    漏洞名称: WordPress Citizen Space插件跨站请求伪造漏洞 CNNVD编号: CNNVD-201307-463 发布时间: 2013-07-23 更新时间: 2013-07-23 ...

  10. CodeForce 2A Winner

    很多人玩一个游戏,每一轮有一个人得分或者扣分,最后分数最高的人夺冠:如果最后有多个人分数都是最高的,则这些人里面,在比赛过程中首先达到或者超过这个分数的人夺冠.现在给定最多1000轮每轮的情况,求最后 ...