1、生命周期的几个阶段介绍:

onCreate:

  表示activity被创建,做一些初始化工作如调用setContentView去加载界面布局资源、初始化Acitivity所需数据等。改方法中调用destroy时,其它生命周期不会由,直接进入onDestroy.

onRestart:

  Activity从不可见变成可见状态时,onRestart就会被调用。打开一个新的activity时,onPause和onStop会被调用,回到当前Acitivity时 onRestart会被首先调用。

onStart:

  onRestart被调用后,onStart会被调用。

onRestoreInstanceState:

  恢复activity页面的数据,一般由 onSaveInstanceState 函数保存的数据。

onResume:

  表示activity已经可见,并且出现在前台开始活动。onStart和onResume都表示avtivity已经可见,但是onStart活动还在后台,onResume已经显示到前台。一般可以用来开启动画/访问相机 等

onPostCreate:

  当整个activity都起来的时候,会被调用。

onPause:

  表示Activity正在停止,正常情况下紧接着onStop就会被调用。

onSaveInstanceState:

  用于保存view相关的数据,但是android并不保证onPause之后一定调用该方法,有可能在onPause之前或者之后。

onStop:

  表示activity即将停止,可以做些轻量级的回收工作

onDestroy:

  表示activity即将被销毁,这是生命周期的最后一个回调,可以做些回收工作和最终的资源的释放。

2、不同启动模式下的生命周期顺序

standard模式下活动启动log

  启动页面A:

        

  跳转到B页面:

    

  返回到页面A:

    

    返回上一页面不会调用onCreate方法

如果跳转到B,然后到C,再返回A:

        

    该模式下,onCreate方法会被重新调用

A 启动 A (Activity堆栈中有自身的Activity)时的log如下: 输出为方法的名称 和 Activity.hashCode()

有上述的log可以看出,每次调用 不管堆栈里面有没有自身这个Activity都会create相同的Activity

singleTast模式下活动的启动log

  启动A页面:

      

  跳转到B页面:

         

  返回到A页面:

       

  如果跳转到B,然后到C,再返回A:

    和从B返回到A相同,在singleTast启动模式中,对于已经启动的活动不会在调用onCreate方法。

SingleTop模式下

  A start A时,不会重新create一个Activity,因为活动栈顶存在这个Acitivity,不需要再创建

  A start B  B 再 start A时,会重新创建 这个Activity,因为栈顶已经没有这个Activity

SingleInstance模式

singleTask类似,不同点是singleInstance要求activity的实例不仅只有一个,并且整个task中只有一个activity实例

启动模式的设置:

a/ 在androidMainifiest中设置Activity的启动模式 

       <activity
android:name=".MainActivity"
android:launchMode="singleTask"
android:configChanges="orientation|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

b/ 在Intent中设置标志位来指定Activity的启动模式

Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

Flag的属性有四种:

FLAG_ACTIVITY_NEW_TASK                ------- singleTask
FLAG_ACTIVITY_CLEAR_TOP ------- clearTop //当栈顶有其他activity时,会把他们出栈处理。 singleTask模式会 调用 onNewIntent
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED ------- clearTop
FLAG_ACTIVITY_SINGLE_TOP ------- singleTop

3、Home键、back、横竖屏切换、锁屏时Activity生命周期

  http://blog.csdn.net/tech_universe/article/details/44157095

4、Activity 与Task千丝万缕

  task是一个具有栈结构的容器,可以放置多个Activity实例。启动一个应用,系统就会为之创建一个task,来放置根Activity;默认情况下,

一个Activity启动另一个Activity时,两个Activity是放置在同一个task中的,后者被压入前者所在的task栈,当用户按下后退键,后者从task被弹出,

前者又显示在幕前,特别是启动其他应用中的Activity时,两个Activity对用户来说就好像是属于同一个应用;

  这一节专门写了一篇:

singlaTask和singleInstance模式 与 startActivityForResult不能共存:

http://blog.csdn.net/androidhuoniao/article/details/6535042

Activity 与 Task 联系

http://blog.csdn.net/liuhe688/article/details/6761337/

  

activity生命周期实例(不同启动模式)的更多相关文章

  1. Android Activity生命周期及启动模式

    曾经搞过许多东西,再熟练的东西一段时间没有碰都会生疏或忘记.后来体会到写成文档记录下来的重要性,但有些word或ppt记录下来的东西随着时间流逝会丢失,或者不愿去看.或许保存成博客的形式,会是更好的选 ...

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

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

  3. Android Activity生命周期与启动模式

    Activity的完整生命周期如下图: Activity的加载模式有四种: standard: 标准模式,默认的加载模式,每次通过这种模式启动目标Acitivity,都创建一个新的实例,并将该Acti ...

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

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

  5. android学习笔记 activity生命周期&任务栈&activity启动模式

    activity生命周期 完整生命周期 oncreate->onstart->onresume->onpause->onstop->ondestory 使用场景:应用程序 ...

  6. Android查缺补漏--Activity生命周期和启动模式

    一.生命周期 onCreate():启动Activity时,首次创建Activity时回调. onRestart():再次启动Activity时回调. onStart():首次启动Activity时在 ...

  7. Activity生命周期以及启动模式对生命周期的影响

    前天用户体验反馈的一个需求,要求每次进入应用都定位到首页;这个操作很明显不适合放在首页Activity(启动模式为SingleTask)的onResume中,如果对Activity的启动模式和生命周期 ...

  8. Activity生命周期以及启动模式对生命周期的影响(二)

    前面一篇文章概述了Android四大组件之一的Activity生命周期方法的调用先后顺序,但对于非标准启动模式下Activity被多次调用时的一些生命周期方法并未详细阐述,现在针对该情况着重记录. 现 ...

  9. Android开发之Activity的生命周期以及加载模式

    本篇博客就来好好的搞一下Activity的生命周期,如果搞过iOS的小伙伴的话,Activity的生命周期和iOS中ViewController的生命周期非常类似.生命周期,并不难理解.一个人的生命周 ...

随机推荐

  1. Netty学习第二节Java IO通信

    一.Java IO通信 名词解释: BIO通信:       采用BIO通信模型的服务端,通常由一个独立的Acceptor线程负责监听客户端连接,在接收到客户端请求后,为每一个客户端建立一个新的线程负 ...

  2. MessageBox的常见用法

    一 函数原型及参数 function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer; hWnd:对话框父窗口句柄, ...

  3. 基于注解方式@AspectJ的AOP

    启用对@AspectJ的支持 Spring默认不支持@AspectJ风格的切面声明,为了支持需要使用如下配置: <aop:aspectj-autoproxy/> 这样Spring就能发现@ ...

  4. Thread in depth 2:Asynchronization and Task

    When we want to do a work asynchronously, creating a new thread is a good way. .NET provides two oth ...

  5. Configure Pi as simulation hardware for Simulink

    1. Only version not older than R2013 supports Raspberry Pi. First, download support package in Matla ...

  6. sun.jersey使用Jackson转换数据

    差点被com.sun.jersey自身的json转换吓死,遇到List等类型,会把这些也转换为json对象,而不是jsonarray. 被园里的同行拯救了,在web.xml中配置一下就ok. < ...

  7. TSQL--按某字段列分组,在将各组中某列合并成一行

    鉴于群里很多同事在问这个问题,我简单写个Demo,希望对初学者有帮助! 无真相,无解说,不解释,直接上Code! --========================================= ...

  8. Layui 手册一

    icon-图标 1:√2:×3:问号4:锁5:哭脸6:笑脸7:感叹号 使用layer.msg('',{ icon:1 });  目前只提供7种图标可选,用的适当还是很好看的. 表格刷新 parent. ...

  9. ajax C# webapi上传图片

    html ajax上传图片到服务器 后端采用asp.net webapi 前端有各种现实上传图片的控件,样式可以做的很美观.我这里只用基本的样式做图片上传. 前端代码 <input name=& ...

  10. 知物由学 | 未来安全隐患:AI的软肋——故意欺骗神经网络

     本文由  网易云发布. “知物由学”是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道.“知物由学 ...