android activity 生命周期及启动模式

Android Activity的生命周期和启动模式 参考:《Android开发艺术探索》 1. Activity 的正常生命周期 完整的activity生命周期如下所示 生命周期的几点注意事项: Activity 第一次启动:onCreate->onStart->onResume。 Activity 切换到后台( 用户打开新的 Activity 或者切换到桌面) ,onPause->onStop(如果新 Activity 采用了透明主题,则当前 Activity 不会回调 onstop)。 Activity 从后台到前台,重新可见,o 阅读详情

android activity 生命周期及启动模式

lifetime 官方图片

这里写图片描述

Activity是由Activity栈进管理,当来到一个新的Activity后,此Activity将被加入到Activity栈顶,之前的Activity位于此Activity底部。Acitivity一般意义上有四种状态:

1.当Activity位于栈顶时,此时正好处于屏幕最前方,此时处于运行状态;

2.当Activity失去了焦点但仍然对用于可见(如栈顶的Activity是透明的或者栈顶Activity并不是铺满整个手机屏幕),此时处于暂停状态;

3.当Activity被其他Activity完全遮挡,此时此Activity对用户不可见,此时处于停止状态;

4.当Activity由于人为或系统原因(如低内存等)被销毁,此时处于销毁状态。

生命周期

完整生命周期entire lifetime

onCreate -> onStart -> onResume -> onPause -> onStop -> onDestroy。

可见生命周期visible lifetime

(onCreate ->) onStart -> onResume -> onPause -> (onStop -> onDestroy)。

前台生命周期forceground lifetime

(onStart -> )onResume (-> onPause) 。

实际应用场景

-在实际应用场景中,假设A Activity位于栈顶,此时用户操作,从A Activity跳转到B Activity。那么对AB来说,具体会回调哪些生命周期中的方法呢?回调方法的具体回调顺序又是怎么样的呢?
开始时,A被实例化,执行的回调有A:onCreate -> A:onStart -> A:onResume。
当用户点击A中按钮来到B时,假设B全部遮挡住了A,将依次执行A:onPause -> B:onCreate -> B:onStart -> B:onResume -> A:onStop。
此时如果点击Back键,将依次执行B:onPause -> A:onRestart -> A:onStart -> A:onResume -> B:onStop -> B:onDestroy。

-按下Home键(非长按),系统返回到桌面
执行A:onPause -> A:onStop。由此可见,Back键和Home键主要区别在于是否会执行onDestroy。

-再进入此应用
A:onRestart -> A:onStart -> A:onResume。

其他生命周期

onWindowFocusChanged、onSaveInstanceState、onRestoreInstanceState。

onWindowFocusChanged方法:在Activity窗口获得或失去焦点时被调用,例如创建时首次呈现在用户面前;这个方法在某种场合下还是很有用的,例如程序启动时想要获取视特定视图组件的尺寸大小,在onCreate中可能无法取到,因为窗口Window对象还没创建完成,这个时候我们就需要在onWindowFocusChanged里获取。

onSaveInstanceState:(1)在Activity被覆盖或退居后台之后,系统资源不足将其杀死,此方法会被调用;(2)在用户改变屏幕方向时,此方法会被调用;(3)在当前Activity跳转到其他Activity或者按Home键回到主屏,自身退居后台时,此方法会被调用。第一种情况我们无法保证什么时候发生,系统根据资源紧张程度去调度;第二种是屏幕翻转方向时,系统先销毁当前的Activity,然后再重建一个新的,调用此方法时,我们可以保存一些临时数据;第三种情况系统调用此方法是为了保存当前窗口各个View组件的状态。onSaveInstanceState的调用顺序是在onPause之前。

onRestoreInstanceState:(1)在Activity被覆盖或退居后台之后,系统资源不足将其杀死,然后用户又回到了此Activity,此方法会被调用;(2)在用户改变屏幕方向时,重建的过程中,此方法会被调用。我们可以重写此方法,以便可以恢复一些临时数据。onRestoreInstanceState的调用顺序是在onStart之后。

activity启动模式

Activity的启用模式也较为简单,它会在活动切换时用到。Activity的启动模式分为四种,standard、singleTop、singleTask、singleInstance模式。接下来将为大家详细的介绍一下这几种加载模式。

1.standard 
standard加载模式的栈如下所示,无论栈中有没有该对象的实例,都会被创建:

这里写图片描述

2.singleTop 
只要被创建的活动不位于栈的顶部,该活动就会被创建入栈。如果将要被创建的活动位于栈的顶部,该活动的实例就不会被创建。测试方法,把上面的模式直接改成singleTop模式,MainActivty往自己身上跳转就不会从新创建一个新的实例,会重用之前在栈顶中的实例。如果是MainActivty跳转到SecondActivty, 然后SecondActivity再次跳转到MainActivty, 那么此时的MainActivity将会被创建,因为栈顶是SecondActivity。如下所示:

这里写图片描述

3.singleTask
单任务模式,这个也不难理解,如果从MainActivty跳转到SecondActivity, 如果再从SecondActivty跳转到MainActivity, 在单任务模式下MainActivity已经在栈中,就会把它之前的Activity出栈,使其处于在栈顶活跃的位置。原理如下图所示:

这里写图片描述

4.singleInstance
可以看成单例模式,这个比较特殊,被设置成singleInstance的Activity将会放入另一个栈中,因为这样为了便于共用。上面3中模式位于同一个栈中。下方ThirdActivity跳转到一个加载模式为singleInstance的Activity中。
这里写图片描述

Android小课程3——Activity基础知识,Activity之间跳转,Activity四种启动模式,Activity生命周期 阅读详情

相关推荐

安卓学习笔记06:Activity生命周期与启动模式

安卓生命周期、安卓启动模式

howard2005的专栏 1496

自用重启forceground进程shell脚本

#!/bin/sh while true do ps -ef | grep "xxx" | grep -v "grep" if [ $? -ne 0 ] then # 执行的命令 ./xxx echo "restart process hahaha" else echo "running versy well" fi sleep 20 done 把xxx替换成你的前台执行程序 sleep 的时间根据自己需要定义 ...

giscong的博客 225

4、设备树的处理(1)

其实到第4节才写设备树的问题完全是因为忘记了,之前有一个版本是先关闭了设备树的,习惯性的认为设备树已经处理完了,失误了!!!前文说过,这个系统是依着荣品的开发板和核心板来的,使用的是5.1内核的SDK。它的SDK里是开发板全功能的,所以设备树也是的。

wsen2012的博客 417

Android 常用布局介绍

Android 常用布局简单介绍

陈Sir的博客 4063

5G 网络的移动性管理上下文对比介绍

5G 网络的移动性管理上下文对比介绍 4G/5G MM移动性管理机制对比 5G引入了新移动性管理状态,通过mobility pattern(移动方式)实现按需的移动性管理等。 MM的相关状态分为一下几种: RM状态(用户注册管理 注册态/非注册态)和CM状态(用户连接态/空闲态)独立;RM状态标识UE是否注册到网络,CM状态标识UE和核心网的信令连接是否存在。 RAN侧引入RRC-inactive state:UE(用户端)对于CN(核心网)而言处于连接态,对RAN(接入网)而言处于Ld..

m0_59032675的博客 4823

全国大学生软件测试大赛Web应用测试(二)Selenium功能测试环境配置

全国大学生软件测试大赛Web应用测试(二)Selenium功能测试环境配置指南配置JAVA配置mooctest配置ChromeDriver配置SeleniumSelenium的使用 环境配置指南 配置JAVA 首先进入JDK8官方安装地址 然后找到Windows 64位 jdk8 点击下载(这里下载需要登录Orcale 账户) 下载后JDK的安装根据提示进行,还有安装JDK的时候也会安装JRE,一并安装就可以了。 安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为 D:\java\jav

Kennen0_0的博客 9606

Andorid-foreground 解析

Andorid-foreground 解析foreground 前景色  foreground 也就是前景色,它与background相对应,顾名思义,它指定的drawable是在view视图的上方绘制的。开发实例1.实现遮罩层:<FrameLayout android:id="@+id/id_frameLayout" android:layout_width="wr

Knight-ZXW的博客 2万+

详解从无人机倾斜实景三维建模→模型修复→成果网络发布展示分享全流程

1、倾斜实景三维建模软件:CC(Smart3D)软件2、实景三维模型网页在线发布展示、分享平台:图新地球网页端(Wish3D·Earth平台)图新地球网页端(Wish3D·Earth平台)是基于 WebGL技术研发的国产实景三维模型Web端发布展示平台,可实现TB级倾斜实景三维数据快速加载,支持多种格式的三维模型,如OSGB实景模型、OBJ人工模型、SKP人工模型、RVT格式BIM模型等,同时支持模型单体化、三维模型测量分析、水面特效、日照分析等特殊效果呈现,此外也可以根据您的需要进行本地化部署级功能定制。

GISWorld3D的博客 4377

Android 关于android:foreground设置无效的问题

android:foreground设置前景属性本来打算用这个来处理图片的点击效果,结果发现这个属性存在限制,看了源码才发现问题!这里做下记录。

M家杰的博客 1万+

Unity 接入 Steam 平台

Unity 接入 steam sdk 的登录和应用内购买功能

MarinaTsang的博客 3905

银行一表通监管报送系统详解

国家金融监管总局对于“一表通”的总体描述为:通过建立一套明细级、标准化的数据体系和汇总计算规则,将银行机构传送至监管可信区的业务明细数据汇总生成财务指标、监管指标和监管报表,大幅提升监管数据时效性,统一数据标准,实现数据间的穿透和整合,同时改变机构多头报送数据模式,减轻机构报送负担。

银行信息系统应用架构详解 2520

android 6.0点击效果,设置点击效果foreground

android:foreground最近一段时间研究了一下plaid,想学习一下material design。这里记录一下view的background和foreground。平时的话我们设置点击效果,为了简便,大多数人应该都会使用android:background="@drawable/selecterDrawable"//或是android:background="?selectableI...

weixin_34725044的博客 1893

使用 PLS 回归进行近红外光谱的异常值检测

在光谱数据中,并非每个数据点都是有效的,因此,在构建模型时找到与大部分数据不符合的数据点是一种必要的操作。这些数据我们称之为。在这篇文章中,我们将使用PLS回归进行红外光谱数据的异常值检测。

qq_44204759的博客 1423

【Android】Activity生命周期与五种启动模式

Android会不惜一切代价让它存活下来,甚至会根据需要杀死栈中更底部的 Activity 所依附的应用,以保障该Activity 所需的资源。当另一个 Activity 变为活动状态时,这个 Activity 就会被暂停,当变为不可见时,它就会被停止。当一个 Activity 变得完全不可见时,它就会处于停止状态,而所有 Activity 在进入停止状态之前都要经历暂停状态以进行转换。在此环境中,可能会出现多个应用同时可见,但只有用户最后一次与之交互Activity 才会被认为处于活动状态。

Patrick_yuxuan的博客 1585

PyTorch深度学习实战(25)——从零开始实现Mask R-CNN实例分割

Mask R-CNN 是一种在目标检测任务中引入了语义分割的强大框架,通过在 Faster R-CNN 基础上进行扩展,添加了额外的分支网络,不仅可以准确地检测对象的位置和类别,还可以生成每个实例的精确像素级别的语义分割掩码。其模块化的设计可以轻松地应用于不同的任务和数据集,并且可以通过添加更多的分支进行功能扩展,如实例关键点检测等。

盼小辉丶的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【Android】Activity 的生命周期和启动模式

本文简单介绍了 Android 中 Activity 的状态、生命周期和启动模式

LiuYaoheng的博客 1220

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

我的Android开发笔记之Activity的生命周期和启动模式

1.onRestart()活动由不可见重新变为可见。2.onStart()此时activity已经可见,但是在后台显示。3.onResume()此时activty在前台显示4.onPause()此时activity正在停止,活动显示在后台,不能进行太耗时的操作,不然会影响新的活动的显示5.onStop()此时activity即将停止,可以做一些稍微重量级的操作。6.onStart()和onStop()与onResume()和onPause()的区别在与前者为是否显示,后者是否显示在前台。

2303_80343762的博客 1348

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Android——Activity生命周期与启动模式

本章主要介绍内容: Android的生命周期分析 典型情况下的生命周期分析 异常情况下的生命周期分析 Activity的启动模式 Activity的LaunchMode Activity的Flags IntentFilter的匹配规则 Android的生命周期分析典型情况下的生命周期分析在正常情况下,Activity会经历如下生命周期:

AkaiC的博客 1706

Android笔记:Activity生命周期以及启动模式

Activity(活动)是Android四大组件之一,是一种展示型的组件,用于向用户直接地展示一个界面,并且可以接受用户信息从而进行交互。四大组件中,只有Activity用户可以感知到,其他三个组件,对用户来说都是不可感知的。

weixin_55879210的博客 892

Android深入探索Activity生命周期与启动模式

参考资料:《安卓开发艺术探索》任玉刚。

2401_86909484的博客 1043

安卓开发中,A,activity切换到B,activity会走什么生命周期?分别解释不同的启动模式会走哪些具体生命周期

在安卓开发中,当从A Activity切换到B Activity时,A Activity和B Activity会经历一系列的生命周期回调。这些回调的具体顺序和数量取决于Activity的启动模式。

qq_43664361的博客 659

【安卓】开发理解版——Activity生命周期、启动模式

1、Activity的生命周期 注意:Activity可以理解成【界面】 或者这样理解: 安卓应用就相当于一本书,Activity就相当于书的每一页,Fragment就相当于可以粘贴上去的便利贴。 1、理解Activity的生命周期: Activity的生命周期其实就是7个回调函数,这些函数由系统自行调用,就有点像C语言的main函数。其中六个两两对应,所以我们可以分为3+1形式记忆和理解: 第1对: onCreate():Activity类的对象首次被创建时(会调用该对象一次),由系统自动调用。并标记为

许多仙的博客 246

[Android 笔记一] Activity生命周期和启动模式

1. Activity的生命周期 Activity有四种生命状态 ,分别是:running、paused、stopped、killed。 1.1 正常生命周期 onCreate(): 表示此时activity正在创建,通常进行一些初始化的方法。 onStart(): 表示此时activity已经被创建,但没有位于前台,处于可见但不可交互的状态。 onResume(): 表示此时activity处于前台running的状态,既可见又可交互的状态。 onPause():

weixin_38423311的博客 1254

Android活动——Activity生命周期与启动模式

1. Activity生命周期分析 这里生命周期分为两部分内容: 一是典型情况下的生命周期 指在有用户参与的情况下,Activity所经过的生命周期的改变 另一部分是异常情况下的生命周期 Activity被系统回收或由于当前设备的Configuration发生改变从而导致Activity被销毁重建,与典型情况下的关注点略有不同。 1.1 典型情况下的生命周期 正常情况下会经过如下生命周期: ...

zhewen的博客 435

Android-Activity的四状态、七生命周期、和四启动模式

一、四大基本组件简介: Android四大基本组件:Activity、Service、Content Provider、Broadcast Receiver Activity:活动视图 一个负责与用户交互的显示界面的组件。 Service:服务:一个没有界面、运行在后台的服务。 Content Provider:内容提供者,一个应用程序可以使用Content Provider来共享自己的数

FlowLeaf 8156

Android Activity生命周期和启动模式

当一个具有singleTask模式的Activity请求启动后,比如Activity A,系统首先会寻找是否存在A想要的任务栈,如果不存在,就重新重建一个任务栈,然后创建A的实例后把A放在栈中。如果存在A所需的任务栈,这时要看A是否在栈中有实例存在,如果存在的话,就会把A上面的其他Activity的实例clear,将A调到栈顶并调用它的onNewIntent方法,如果不存在,就创建A的实例,并把A压入栈中。action的匹配规则是Intent中的action必须能够和过滤规则中的action匹配。

huaihong1986的博客 1189
上一篇: android BLE4.0 流程图
下一篇: android service 生命周期及场景
trinity2018
博客等级 码龄14年 3粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值