不同情况下的回调
  • 我们打开应用时先后调用了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. Ueditor之SAE移植

    新浪SAE环境下使用UEditor http://www.cnblogs.com/zjzhome/p/3815460.html?utm_source=tuicool 在SAE上使用Ueditor的图片 ...

  2. 为iOS 7而开发 并支持iOS 6

    除了写这本“Developing an iOS 7 Edge”书之外,我还针对iOS 7更新了app,所以我想我应该和大家分享一下我的收获.如果你正在面向iOS 7系统更新应用,同时你的应用还支持iO ...

  3. 使用ToUpperInvariant避免使用ToUpper

    ToUpperInvariant使用不依赖于区域性进行转换,而ToUpper则使用了当前线程的CultureInfo,进行转换,所以性能会有所影响,以下为测试: [Test] public void ...

  4. NSSet与NSArray区别

    NSSet与NSArray区别     NSSet到底什么类型,其实它和NSArray功能性质一样,用于存储对象,属于集合: NSSet  , NSMutableSet类声明编程接口对象,无序的集合, ...

  5. 疯狂java讲义笔记 2.3.7

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...

  6. 【POJ】3283 Card Hands

    字典树. #include <iostream> #include <cstdio> #include <cstring> #include <string& ...

  7. 图论(网络流):[SCOI2015]小凸玩矩阵

    Description 小凸和小方是好朋友,小方给小凸一个N*M(N<=M)的矩阵A,要求小秃从其中选出N个数,其中任意两个数字不能在同一行或同一列,现小凸想知道选出来的N个数中第K大的数字的最 ...

  8. Paxos算法 Paxos Made Simple

    Paxos算法 Paxos Made Simple Leslie Lamport 2001.11.1 简介 Paxos算法,纯文本方式描述,非常简单. 1 介绍 为 实现具有容错能力的分布式系统而提出 ...

  9. vs2008 多人同时开发项目时的代码注释规范格式 分类: C#小技巧 2014-04-23 14:12 297人阅读 评论(0) 收藏

    多人同时开发一个项目,区分项目的那个窗体是谁开发的,例:下面的格式 /************************************************       模块:服务器设置   ...

  10. 杠杠做的全屏随鼠标滚动显示图片,类似于PPT效果

    图片有22张,是一张张加载的,耐心点,鼠标一直尝试向下滚就行了. 图片来自<天空之境:乌尤尼盐沼>,一个好美好美的地方 引个流,欢迎去我的博客看看:http://blog.cxycs.co ...