onNewIntent是个什么东西?

2023-05-16

Android API
很奇怪,谷歌没有在官方文档中说明这个方法
这里写图片描述
天无绝人之路,我们在源码中找到了这个方法
这里写图片描述

In either case, when the activity is re-launched while at the top of the activity stack instead of a new instance of the activity being started, onNewIntent() will be called on the existing instance with the Intent that was used to re-launch it.
翻译:
在任何情况下,当Activty位于栈顶并将被重新启动时,不会新创建一个新的实例,取而代之的是使用去重新启动的intent调用已经存在的实例中onNewIntent方法

谷歌的开发人员,我得吐槽一下,非要把这么重要的一句话放在singleTop后面,很容易让人以为必须设置singleTop才能调用onNewIntent方法,其实不是这样的!!!singleTask清除目标Activity上面的所有Activity,那目标不就是位于栈顶?singleInstance拥有一个独立的任务栈,所以也是位于栈顶的!

接下来我们出道题来思考下:

A和B的启动模式都是singleTask,并且AB均重写了onNewIntent方法,A方法里面是输出onNewIntent1,B方法里面是输出onNewIntent2,然后A启动B,B启动A,如此循环,问输出结果是什么?

答案是一直输出onNewIntent1,这是为什么呢?
1 启动A 因为A才创建于栈中,不会调用onNewIntent
2 启动B 因为B也是刚创建,所以也不会调用onNewIntent
3 启动A 因为设置的是singleTask模式,并且A已经存在,所以要把A上面的B清空,A就位于栈顶了,这个时候满足栈顶+已经存在,所以A调用方法输出onNewIntent1
4 启动B 因为B被清空,所以再次创建B,所以不会调用onNewIntent
5678….

弄明白了onNewIntent,我们再来理解一下四种启动模式:

standard 每次创建都是一个新的activity,谈不上已经存在,因为每次都是新的

singleTop

singleTop 如果栈顶是该activity就复用,不然的话就重新创建

singleTask

singleTask 如果栈中存在该activity,那么就把这个activity上面的所有activity都清空,让该activity位于栈顶,否则的话就创建

singleInstance

singleInstance 如果有该activity的话就复用,否则的话就新建一个栈并且就栈内就该activity一个activity,也是位于栈顶

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

onNewIntent是个什么东西? 的相关文章

  • Activity onNewIntent详解

    onNewIntent 的触发时间 xff1a onNewIntent png 如图所示 xff0c onCreate 和 onNewIntent 不会被同时调用 官方文档 xff1a onNewIntent added in API le
  • 每天进步一点点之Android基础(3)—— Activity的onNewIntent

    onNewIntent 的触发时间 xff1a 如图所示 xff0c onCreate 和 onNewIntent 不会被同时调用 如果在 AndroidManifest xml 中 xff0c 将 Activity 的 launchMod
  • onNewIntent 作用

    当Activity启动模式为singleTask时 如果在栈中已经有该Activity的实例 xff0c 就重用该实例 会调用实例的onNewIntent 不会调用onCreate方法 重用时 xff0c 会让该实例回到栈顶 xff0c 因
  • 关于Activity的onNewIntent方法

    前言 onNewIntent方法想必大家都知道 xff0c 是和Activity的启动模式结合起来使用的 xff0c 可以这个方法具体什么情况下被调用 xff0c 如何使用你清楚了吗 xff1f 今天就来一探究竟 xff0c 扫清疑惑 实验
  • Activity onNewIntent注意事项

    数据上报发现 xff0c onNewIntent 以后 xff0c onResume和onPause可能不会执行 xff0c 直接执行onStop
  • Android:onNewIntent()触发机制及注意事项

    为什么80 的码农都做不了架构师 xff1f gt gt gt 一 onNewIntent 在 IntentActivity 中重写下列方法 xff1a onCreate onStart onRestart onResume onPause
  • Activity onNewIntent方法的调用时机

    首先看下官方的API说明 xff1a This is called for activities that set launchMode to singleTop in their package or if a client used t
  • [Android] 以singleInstance模式加载的Activity怎么接收以Bundle方式传递过来的参数 By onNewIntent() but not onResum

    问题来自这儿 xff0c Bundle在接收时未更新 xff0c http blog csdn net dadoneo article details 8164058 虽然可以暂时解决问题 xff0c 但并未说到根本原因 xff0c 下面就
  • android:onNewIntent

    本文编写目的 xff1a 供自己查阅 1 通过Intent启到一个Activity的时候 xff0c 就算已经存在一个相同的正在运行的Activity 系统也会创建一个新的Activity实例 为了不让Activity实例化多次 xff0c
  • Activity的onNewIntent

    一个应用的Activity可供多种方式调用启动 xff0c 当多个调用希望只有一个Activity的实例存在 xff0c 并且还要区分是被谁启动或是已经启动被谁拉到前台来的 xff0c 这就需要Activity的onNewIntent In
  • 关于onNewIntent的使用

    摘自 http blog sina com cn s blog 5da93c8f0101hnzx html 当从栈中启动一个已经存在的Activity时 xff0c 系统不会再执行onCreate方法 xff0c 而是执行onNewInte
  • Activity中使用onNewIntent方法避免多次实例化同一个Activity

    最近写的项目中有一个搜索 搜索结果 搜索这样一个循环的过程 xff0c 发现了几个问题 xff1a 1 循环导致多次实例化这两个类 xff1b 解决方案 xff1a 在Manifest里面对应activity下面设置启动模式为singleT
  • android onNewIntent 调用时机

    当前Activity已经在Activity堆栈当中时 xff0c 主要取决于LaunchMode对应的设置 LaunchMode为SingleTop时 xff0c 如果ActivityA在栈顶 且现在要再启动ActivityA xff0c
  • onNewIntent详解

    记得刚开始学的时候 xff0c 感觉intent还挺简单 xff0c 结果现在总是被intent困扰 xff0c 发现自己太天真了 xff0c 为了弄清楚 xff0c 总结一下 xff0c 一 onNewIntent 老规矩 xff0c 先
  • Android Activity onNewIntent() 详解

    阅读更多 阅读难度 xff1a 中 阅读前提 xff1a 1 需要了解 Android 的生命周期 xff0c 每个方法的触发时机以及作用 2 需要了解 Activity 的 launchMode 模式和作用 3 Intent 基本知识及作
  • onNewIntent是个什么东西?

    Android API 很奇怪 xff0c 谷歌没有在官方文档中说明这个方法 天无绝人之路 xff0c 我们在源码中找到了这个方法 In either case when the activity is re launched while
  • onNewIntent 什么时候调用

    protected void onNewIntent Intent intent Since API Level 1 This is called for activities that set launchMode to 34 singl
  • Android onNewIntent()需要注意的一些问题

    一 场景 最近遇到一个需求 xff1a 有A B C三个页面 xff0c A能跳到B xff0c 然后B会跳到C xff0c C还能跳到B xff0c 反正B和C两个页面能互相跳 xff0c 但是C页面点击返回的时候要回到A xff08 p
  • app = Flask(__name__) 是个什么东西

    34 34 34 第一部分 xff0c 初始化 xff1a 所有的Flask都必须创建程序实例 xff0c web服务器使用wsgi协议 xff0c 把客户端所有的请求都转发给这个程序实例 程序实例是Flask的对象 xff0c 一般情况下
  • docker load 是个什么东西?

    docker load 是个什么东西 xff1f docker load 是一个用于将 Docker 镜像加载到本地 Docker 环境中的命令 通常 xff0c 我们将 Docker 镜像从 Docker Hub 或者其他镜像仓库中下载到

随机推荐

  • javascript动态插入html元素

    主要有是两种方案 xff1a 1 使用DOM span class hljs comment 使用createElement创建元素 span span class hljs keyword var span dialog 61 docum
  • python中switch语句用法

    python中是没用switch语句的 xff0c 这应该是体现python大道至简的思想 xff0c python中一般多用字典来代替switch来实现 coding utf 8 from future import division d
  • ROS的 sudo rosdep init 的报错终极解决方案

    ROS的 sudo rosdep init 的报错解决方案 安装ROS时sudo rosdep init指令报错 xff1a ERROR span class token operator span cannot download span
  • 干支纪年

    干支纪年 摘自 xff1a http baike baidu com view 187057 htm 1 天干 xff08 甲 xff09 象草林破土而萌 xff0c 阳在内而被阴包裹 又有认为 xff0c 甲者铠甲也 xff0c 把万物冲
  • “密码不满足密码策略的要求,检查最小密码长度、密码复杂性和密码历史的要求”的解决办法(Windows...

    Windows Server 2003解决办法是 xff1a 选择 开始 gt 程序 gt 管理工具 gt 域安全策略 gt 帐户策略 gt 密码策略 密码必须符合复杂性要求 xff1a 由 已启用 改为 已禁用 xff1b 密码长度最小值
  • 解决android studio 不同ApplicationId可能导致xmlns命名空间报错

    遇到一个需求 xff0c 想出不同渠道 xff0c 我们可以知道在build gradle里面声明 productFlavors dev minSdkVersion 21 applicationId 34 xxx xxx xxx 34 ma
  • Manjaro Linux KDE 安装后的配置

    一 更换中国源 span class token function sudo span pacman mirrors i c China m rank 这个命令执行完毕的时候后弹窗让你选择想要使用的源 xff0c 选择速度最快的那个就可以了
  • 盘点程序员情人节的表白,前端程序员最浪漫,后端不服来战

    loonggg 读完需要3分钟 速读仅需1分钟 今天是七夕 xff0c 中国的情人节 xff0c 当然了就是牛郎和织女团聚的日子 在 IT 群体中 xff0c 很多人都说程序员不浪漫 xff0c 程序员不懂得浪漫 xff0c 程序员木讷 x
  • 毕业设计 Spring Boot的在线音乐网站系统(含源码+论文)

    文章目录 1 项目简介2 实现效果2 1 界面展示 3 设计方案3 1 概述3 2 系统流程3 2 1 系统开发流程 3 3 系统结构设计 4 项目获取 1 项目简介 Hi xff0c 各位同学好呀 xff0c 这里是M学姐 xff01 今
  • mac(osx) apache无法启动 localhost无法访问服务器

    问题描述 xff1a 由于删除了 private var log下面的日志 xff0c 导致重启电脑后apache无法正常工作 删除log的初衷是 xff1a 当系统用久了 xff0c 日志文件占据了几十个G的硬盘容量 造成的后果 xff1
  • 去掉了“摆动窗口”特效

    自从安装了KDE4以后 xff0c 我就再也离不开那些华丽的特效了 很多的时候 xff0c 不得不忍受万分缓慢的速度 昨天 xff0c 对开启的特效进行了一些精简 xff1a 最大化 最小化窗口特效仅保留魔灯 xff1b 关闭了摆动窗口特效
  • 单片机关键字sfr和sbit的理解

    在单片机C语言编程中 xff0c 扩充了两个关键字sfr和sbit sfr Special Function Register特殊功能寄存器的缩写 xff0c sbit 特殊功能寄存器位 xff0c 与定义一般的int char型变量不同
  • CSR1010蓝牙开发I/O操作

    CSR1010开发前期准备 1 开发环境CSR uEnergy SDK 2 5 1 2 硬件准备keyfob蓝牙开发板 xff0c USB SPI下载器 CSR1010 I O开发须知 xff1a 关于I O操作的函数库被定义在头文件 lt
  • ArchLinux必备命令记录

    1 添加新账户 useradd username新建账户 useradd d home xxx m xxx创建用户 xff0c 并同时生成用户目录 xff0c 不然账户无法正常启用 passwd username修改密码 userdel f
  • CSR1010蓝牙开发探索(一)

    花了多少时间我已经不想提起 xff0c 但是至少还是有点成果的 xff0c 分析了不少代码 xff0c 也看了不少资料 xff0c 发现比较接地气的东西还是比较少 xff0c 不多花点时间积累 xff0c 说实话很辛苦 现在还没有足够的水平
  • STM32F103C8开发74HC595串行转并行输出(五)

    1 新建项目 xff0c 选择芯片型号 xff0c 选中如下库文件 xff1a 代码如下 xff1a include 34 stm32f10x h 34 define MOSIO GPIO Pin 12 61 PA12 define R C
  • STM32F103C8开发I2C通信(六)

    关于参数id的说明 xff1a id是指与MCU相通信的设备的地址 xff0c 其中id为七位地址 xff0c 最后一位作为读写标志位使用 例如 xff1a 当外接设备为型号为24C02的E2PROM时 xff0c 根据24C02数据手册说
  • STM32F103C8开发紫外线传感器SI1133的使用(七)

    SI1133传感器是基于I2C通信的 xff0c 关于I2C部分请参考 xff1a 关于传感器初始化参数的说明 xff1a PARAM CHAN LIST 配置通道 xff0c 从bit0到bit5 分别代表通道0到5 xff0c 共六个通
  • Java打印任意字符串的字符画

    首先看一下实现的效果 xff1a 注意 xff1a 字符画的样式会根据选择字体的不同而不同 xff0c 这里使用的是 幼圆 字体 基本原理 xff1a 主要原理是获取系统字库的字模信息 xff0c 根据字模信息来画字符画 基本思路 xff1
  • onNewIntent是个什么东西?

    Android API 很奇怪 xff0c 谷歌没有在官方文档中说明这个方法 天无绝人之路 xff0c 我们在源码中找到了这个方法 In either case when the activity is re launched while