Activity生命周期和启动模式

Activity正常情况下的生命周期:

1.   一个Activity的正常启动: onCreate --> onStart --> onResume

2.   A(Activity)打开新的B(Activity)或者用户按住Home键切换到主界面,当前Activity所调用的方法:  onPause  -->  onStop

3.   此时在重新回到A(Activity)所调用的方法:  onRestart  -->  onStart  -->  onResume

4,   当在A(Activity)用户按 back 键回退时,回调方法:onPause -->  onStop  -->  onDestroy

那么刚刚说了正常情况下的Activity,下面就来说说异常情况下的Activity,Activity异常情况:当资源相关的系统配置发生改变(横竖屏的切换)以及内存不足时,Activity就可能被杀死。

异常情况不得不提的两个方法:onSaveInstanceState 和 onRestoreInstanceState

这两个方法,在某个Activity发生异常情况时,调用。

意外销毁:Activity --> 意外情况 --> onSaveInstanceState -->  onDestroy  (这是Activity异常销毁才会调用,正常情况下不会调用此方法)

重新创建:Activity --> onCreate -->  onStart  -->  onRestoreInstanceState  当Activity被重新创建后,系统会调用 onRestoreInstanceState ,并且将Activity销毁时,调用 onSaveInstanceState 保存的 Bundle 对象作为参数传入 ,我们可以通过判断 Bundle对象是否为空,来判断Activity是否异常终止。

Activity的启动模式: Standard 、 SingleTop 、 SingleTaslk 、 SingleInstance

1. Standard :标准模式,每次启动一个Activity都会重新创建一个新的Activity的实例,放入任务栈的栈顶,无论栈里面是否有此Activity的实例。

2. SingleTop:栈顶复用模式,如果新的Activity已经位于任务栈的栈顶,那么此Activity不会被重新创建,只会调用它的 onNewIntent 方法;如果Activity存在于任务栈中,我们还是会在任务栈重新创建一个Activity 放入栈顶。

3. SingleTask : 栈内复用模式,单实例模式,只要Activity在一个栈中存在,他就不会重新创建新的实例,同时也会调用它的 onNewIntent 方法,而且它默认具有 clearTop的效果,所以会将这个Activity上面的Activity都pop出栈。

eg:

某app的任务栈为Stack1,里面的Activity是ABC(昨天为栈底,右边为栈顶),当Activity D的请求是SingleTask模式,且他请求的栈为Stack2,此时不存在Stack2,所以系统会先创建Stack2再把 Activity D压入栈。所以这个模式,就是先寻找是否有Activity所需要的任务栈,如果没有就创建;然后,再在这个栈中寻找有没有这个Activity,如果有就复用回调onNewIntent方法,并clearTop,这就是这个模式的思想。

4. SingleInstance :单实例模式。这种模式是加强的SingleTask模式,它还具有一个属性,就是这个模式下的Activity只能单独存在于一个新的任务栈,由于栈内复用的特性,后续的请求均不会创建新的Activity,除非这个任务栈被系统销毁。

Activity的生命周期与启动模式大概就写到这里吧。

时间: 2024-08-02 18:44:26

Activity生命周期和启动模式的相关文章

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

前天用户体验反馈的一个需求,要求每次进入应用都定位到首页;这个操作很明显不适合放在首页Activity(启动模式为SingleTask)的onResume中,如果对Activity的启动模式和生命周期熟悉,那么很容易想到在onNewIntent里操作就可以了,这样在应用内跳转不至于每次都定位到首页. 可见,对Activity生命周期和启动模式进行一下梳理很有必要.下面主要描述一下Activty的生命周期,以及launchMode对生命周期的影响,onNewIntent,onSaveInstanc

Android Activity生命周期及启动模式

曾经搞过许多东西,再熟练的东西一段时间没有碰都会生疏或忘记.后来体会到写成文档记录下来的重要性,但有些word或ppt记录下来的东西随着时间流逝会丢失,或者不愿去看.或许保存成博客的形式,会是更好的选择,勉励自己. Activiy是Android开发中最常用最常见的组件,是Android开发人员开始学习首先接触的组件,也是大部分人建立一个工程后,首先要处理的可能就是Activity.这么重要.常用.简单.易上手的组件,牢固掌握其基础知识,对于开发人员是非常重要的.本文会首先解释其基本概念,对于其

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

前面一篇文章概述了Android四大组件之一的Activity生命周期方法的调用先后顺序,但对于非标准启动模式下Activity被多次调用时的一些生命周期方法并未详细阐述,现在针对该情况着重记录. 现象 发布会demo中出现了这样的一种现象:当界面即将出现时,语音重复唤起该界面时,由于在onPause中调用了finish(),界面一直未显示出来,这不是我们想要的. 分析 由于系统组这边存在的一个bug,全屏的Activity出现时会带起在后台运行的应用界面,所以我们这边的Activity不得不采

Android Activity生命周期与启动模式

Activity的完整生命周期如下图: Activity的加载模式有四种: standard: 标准模式,默认的加载模式,每次通过这种模式启动目标Acitivity,都创建一个新的实例,并将该Activity添加到当前栈中. singleTop: 与标准模式类似,只有当Activity位于Task顶时,系统不会重新创建目标Activity的示例,而是直接复用已有的Activity实例. singleTask: 如果要启动的Activity不存在,系统创建Activity实例,并将它加入栈顶 如果

Android03-Activity生命周期及启动模式

1.返回栈概念 2.生命周期 1. onCreate() 这个方法你已经看到过很多次了,每个活动中我们都重写了这个方法,它会在活动 第一次被创建的时候调用.你应该在这个方法中完成活动的初始化操作,比如说加载布 局.绑定事件等. 2.onStart() 这个方法在活动由不可见变为可见的时候调用. 3.onResume() 这个方法在活动准备好和用户进行交互的时候调用.此时的活动一定位于返回栈的栈顶,并且处于运行状态. 4. onPause() 这个方法在系统准备去启动或者恢复另一个活动的时候调用.

Android开发艺术探索——第一章:Activity的生命周期和启动模式

Android开发艺术探索--第一章:Activity的生命周期和启动模式 怀着无比崇敬的心情翻开了这本书,路漫漫其修远兮,程序人生,为自己加油! 一.序 作为这本书的第一章,主席还是把Activity搬上来了,也确实,和Activity打交道的次数基本上是最多的,而且他的内容和知识点也是很多的,非常值得我们优先把他掌握,Activity中文翻译过来就是"活动"的意思,但是主席觉得这样翻译有些生硬,直接翻译成"界面"可能更好,的确,Activity主要也是用于UI效

Android开发艺术探索(一)——Activity的生命周期和启动模式

Activity的生命周期和启动模式 生命周期有? 1.典型情况下的生命周期—>指有用户参与的情况下,Activity所经过的生命周期改变 2.异常情况下的生命周期—>指Activity被系统回收或者由于当前设备的configuration发生改变而导致Activity被销毁重建 1.1 典型生命周期分析 旧活动的OnPause先调用,新Activity才启动 异常分析: 1.资源相关的系统配置发生改变,导致Activity被杀死并重新创建 系统只在Activity导致终止的时候才会调用OnS

Activity生命周期+四种模式——枯燥重要(五)

Activity生命周期+四种模式 了解android系统的四大组件 掌握Activity的生命周期 LogCat的使用 Android系统有四个重要的组件,分别是 Activity Service BroadcastReceiver ContentProvider Activity是Android程序的呈现层,显示可视化的用户 界面,并接收与用户交互所产生的界面事件 Android应用程序可以包含一个或多个Activity,一般在 程序启动后会呈现一个Activity,用于提示用户程序已经 正

安卓开发 activity的生命周期以及启动模式

Activity生命周期 安卓活动由一个返回栈管理 安卓活动有四个状态 1.运行状态 当一个活动位于栈顶的时候,这个活动就处于运行状态,也就是和用户进行交互的那个界面. 2.暂停状态 当活动不处于栈顶,但依然可见.意思就是这个活动没有被完全覆盖,上面有一层对话框之类的. 3.停止状态 活动不处于栈顶,完全不可见.这个好理解吧,就是用户看不到了. 4.销毁状态 活动从栈中移除了,也就是被用户关闭了. Activity共有七个回调方法,覆盖了活动整个生命周期 1.onCreate() 活动创建时调用