Activity的启动模式以及onNewIntent和onConfigurationChanged这两个生命周期方法的场景

2023-05-16

1.Activity的启动模式有哪几种,分别用于什么场景?

Activity的启动模式的4种:

  1. standard标准启动模式,默认的启动模式。每一次启动这个activity都会创建新的activity实例。被启动的activity会被放入启动者的栈中,如果启动者除Activity之外的Context(如Application),这时没有任务栈,就会报错,此时需要指定FLAG_ACTIVITY_NEW_TASK标记位,创建一个新的栈。

应用场景:绝大部分普通的场景下使用的acticity。

2.singleTop栈顶复用模式,设置这个模式的activity,如果任务栈的栈顶存在这个activity,则不会重新创建新的activity,这个activity 的onNewIntent()方法会被调用。

应用场景:通过通知栏来启动的页面。

3.singTask栈内唯一,在当前任务栈里面只能有一个activity实例的存在。当启动这种模式的activity时,会检查任务栈中是否存在这个activity,如果存在,则会调用该activity的onNewIntent()方法,并且把它上面的activity全部清空 ,这个activity称为栈顶。

应用场景:App中的一般使用的MainActivity或者其他一些需要占用大量系统资源的Activity。浏览器的主界面,不管多少个应用启动浏览器,只会启动一次浏览器主界面,其余的情况走OnNewIntent方法,并且会清空主界面上的其他actvity。

4.singleInstance,这个模式里面的activity会运行在自己的任务栈里面,并且这个任务栈里面只有一个实例存在。启动这个模式的Activity,如果当前系统中有这个样的一个Activity已经被启动,会把它所在的任务栈切换到前台,这个activity的onNewIntent()会被调用。如果你要保证在整个手机操作系统里面只有这一个activity,则可以使用这个模式。

应用场景:打电话界面

2.描述onNewIntent和onConfigurationChanged这两个生命周期方法的场景?

(1) 这几种场景下Activity不会重新被创建,onNewIntent方法会被调用。

1.singtop模式启动的activity,在任务栈中存在。

2.singTask模式启动的activity,任务栈中存在。

3.singInstance模式启动的acitivity,系统中已经存在一个栈包含这个activity。
这些情况下可以通过setIntent(intent)来刷新intent数据.

(2)默认情况下,当系统配置(如系统语言,屏幕方向)发生改变后,系统会销毁当前的activity重新创建一个新的activity,重新执行一次生命周期方法。

如果屏幕旋转时,不希望Activity被销毁,可以在配置信息中声明:
android:configChanges = “orientation|screenSize”在这种情况下,如果屏幕旋转方向,Activity则不会被销毁,他的onConfigurationChanged()方法会被调用,通过读取configuration来读取对象中最新的配置来适配UI界面.

参考刚哥留下的标准答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Activity的启动模式以及onNewIntent和onConfigurationChanged这两个生命周期方法的场景 的相关文章

随机推荐

  • 看完微信抢红包算法你就明白,为啥你不是手气最佳

    摘要 xff1a 今天我们就来分析一下抢红包的算法 xff0c 其中有一些是微信红包的算法 xff0c 看完你就知道手气最佳是如何产生的啦 本文分享自华为云社区 为啥春节抢红包总不是手气最佳 xff1f 看完微信抢红包算法你就明白了 xff
  • python读音播报-基于python GUI开发的点名小程序(语音播报)

    实现名单轮播 点名 语音播报功能 coding utf8 ProjectName python3 FileName name Author shuxiaying Date 2020 7 9 Description import dateti
  • python编程100个小程序-整理了适合新手的20个Python练手小程序

    即刻关注公众号 xff0c 发现世界的美好 100个Python练手小程序 xff0c 学习python的很好的资料 xff0c 覆盖了python中的每一部分 xff0c 可以边学习边练习 xff0c 更容易掌握python 程序1 题目
  • python编程入门书籍-最适合Python初学者的6本书籍推荐「必须收藏」

    原标题 xff1a 最适合Python初学者的6本书籍推荐 必须收藏 Python是一种通用的解释型编程 xff0c 主要用于Web开发 机器学习和复杂数据分析 Python对初学者来说是一种完美的语言 xff0c 因为它易于学习和理解 x
  • dubbo好书推荐

    为了自己的进步 xff0c 也为了能够帮助其他人 xff0c 我决定开始写一些东西 xff0c 网上有很多学习资料 xff0c 自己的功力未必到家 xff0c 所以大家共同进步吧 xff01 站在巨人的肩膀上看得远 xff0c 现在推荐一本
  • linux升级java的jdk版本

    这里以升级jdk 8u231 linux x64 rpm为示例 安装 xff0c rpm ivh jdk 8u161 linux x64 rpmrpm pql root jdk 8u161 linux x64 rpm 通过查看 jdk 的信
  • you-get简明使用教程

    前言 近期 xff0c 想要下载哔哩哔哩等网站的视频 xff0c 网上查了一下you get的使用教程和视频 xff0c 有些特别简单 xff0c 说的不求甚解 xff0c 有些讲的太过繁琐 xff0c 所以 xff0c 打算自己写一个简单
  • linux分区扩容(非lvm)

    前言 最近 xff0c 在使用linux中中 xff0c 对于分区空间不够使用的情况下 xff0c 如果是使用lvm的分区 xff0c 是可以使用lvm扩容的 xff0c 流程大概是 xff1a 新加磁盘 将新加的磁盘创建成pv 将新加的p
  • linux关闭virbr0网卡

    前言 最近 xff0c 在使用linux时 要求需要关闭virbr0的网卡 xff0c 网上查了一下virbr0是kvm虚拟机使用的网卡 xff0c 是libvirtd服务安装后 xff0c 自动生成的 xff0c virbr0的配置文件位
  • rsync定时备份数据

    前言 rsync定时备份数据 简介 使用非系统用户备份数据192 168 130 63的 var www html 目录到192 168 130 64的 web bak目录 rsync定时备份数据 实验环境 xff1a 服务器 xff1a
  • rsync+sersync实时同步数据

    前言 rsync 43 sersync实时同步数据 简介 rsync 43 sersync实时同步数据的原理是在客户端安装sersync监控目录的变化 xff0c 一般是增删改 xff0c 检测到变化以后 xff0c 将变化的文件同步到服务
  • 配置 NFS 服务简述

    前言 配置 NFS 服务简述 简介 nfs utils服务依赖于rpcbind的服务 xff0c 是将服务端的目录共享 xff0c 其实是共享的 整个服务端的空间 xff0c 在客户端将共享目录挂载使用即可 配置 NFS 服务简述 实验环境
  • javaweb中四大域对象的生命周期与常用方法

    一 ServletContext 1 生命周期 xff1a 当Web应用被加载进容器时创建代表整个web应用的ServletContext对象 xff0c 当服务器关闭或Web应用被移除时 xff0c ServletContext对象跟着销
  • spring boot 集成 Guava Cache

    Guava Cache 背景集成缓存存放缓存回收 xff1a 基于容量回收 xff08 Size based Eviction xff09 基于时间回收 xff08 Timed Eviction xff09 基于引用类型的回收 xff08
  • 求1~n的阶乘的和,例:1!+2!+3!+......n!

    目录 递归实现 思想 代码实现 非递归实现 思想 代码实现 递归实现 xff1a 利用递归的形式实现阶乘的求和功能 xff0c 但是要注意栈溢出 xff0c 每次递归都会调用 xff0c 都会压栈 xff0c 占用栈中内存 xff0c 如果
  • 如何给shell脚本传入参数小结

    大家都知道普通的bash命令后边可以跟任意的参数 xff0c 那我们自己编写的脚本是否也支持传递参数呢 xff1f 答案当然是肯定的 执行 vim test sh 创建一个新的shell脚本 脚本test sh的内容如下 xff1a bin
  • 使用calibre制作带目录的mobi电子书

    1 把word等格式的书籍转换成txt格式的文件 xff0c 另外再重新把txt文件打开 xff0c 另存为UTF 8格式的文件 2 在想设为目录条目的地方输入 符号 xff0c 一级目录输入一个 xff0c 二级目录输入 3 在每段开头处
  • redis的快照和集群部署

    1 安装 使用redis 3 2 8 tar gz tar zxvf redis 3 2 8 tar gz cd redis 3 2 8 make amp amp make test amp amp make install xff08 1
  • 解决cannot open shared object file: No such file or directory

    一 linux下调用动态库 so文件时提示 xff1a cannot open shared object file No such file or directory 解决办法 xff1a 1 此时ldd xxx查看依赖缺少哪些库 lib
  • Activity的启动模式以及onNewIntent和onConfigurationChanged这两个生命周期方法的场景

    1 Activity的启动模式有哪几种 xff0c 分别用于什么场景 xff1f Activity的启动模式的4种 xff1a standard标准启动模式 xff0c 默认的启动模式 每一次启动这个activity都会创建新的activi