Activity onNewIntent详解

2023-05-16

onNewIntent() 的触发时间:

onNewIntent.png

  • 如图所示,onCreate() 和 onNewIntent() 不会被同时调用。

官方文档:

onNewIntent
·added in API level 1
·void onNewIntent (Intent intent)
·This is called for activities that set launchMode to "singleTop" in their package, or if a client used the FLAG_ACTIVITY_SINGLE_TOP flag when calling startActivity(Intent). 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.
·An activity will always be paused before receiving a new intent, so you can count on onResume() being called after this method.
·Note that getIntent() still returns the original Intent. You can use setIntent(Intent) to update it to this new Intent.
·Parameters
intent Intent: The new intent that was started for the activity.

简单说明:

如果在 AndroidManifest.xml 中,将 Activity 的 launchMode 设置成了 "singleTop" 模式,或者在调用 startActivity(Intent) 时,设置了FLAG_ACTIVITY_SINGLE_TOP 标识,那么,当该 Activity 再次被启动时,如果它依然存在于 Activity 栈中,并且刚好处于栈的最顶层时,那么它将不会被重新创建,而是直接使用原来的实例,此时,onNewIntent(Intent) 将会被调用,后续生命周期中的其它方法,就可以使用 onNewIntent(Intent) 传递过来的新的 Intent 参数了。(也就是说,其它方法可以使用更新后的 Intent 参数)

也就是说,调用顺序如下:
onNewIntent() -> onRestart() -> onStart() -> onResume()

需要特别注意的是, 如果在 onNewIntent(Intent) 中,不调用 setIntent(Intent) 方法对 Intent 进行更新的话,那么之后在调用 getIntent() 方法时得到的依然是最初的值。

 

protected void onNewIntent(Intent intent) {
 
    super.onNewIntent(intent);
 
    setIntent(intent);//must store the new intent unless getIntent() will return the old one
 
    processExtraData();
 
}

在启动 Activtiy 时,如果希望在 onCreate() 不被触发的的情况下,依然可以对 Intent 进行操作,这就需要使用 onNewIntent()。
不要忘记,系统可能会随时杀掉后台运行的Activity,如果这一切发生,那么系统就会调用onCreate方法,而不调用onNewIntent方法,一个好的解决方法就是在onCreate和onNewIntent方法中调用同一个处理数据的方法.



作者:莫里亚蒂教授档案馆
链接:https://www.jianshu.com/p/aacf0ad54dca
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

Activity onNewIntent详解 的相关文章

随机推荐

  • Java关键字小记

    Static静态内部类静态变量和方法导包静态代码块 final用来修饰数据用来修饰方法参数修饰方法修饰类 abstractabstract类abstract方法 extendsthrow和throwsvolatile 本篇是Java关键字的
  • Java 通过反射获取方法与变量

    0 反射技术 反射技术是Java生态中的重要内容 xff0c 在Spring以及其他框架中得到了广泛的应用 有了反射技术 xff0c 我们可以在程序运行的过程中 xff1a 构建任意一个类的对象 xff0c 了解任意一个对象所属的类 xff
  • 分享一个免费版本库可以建私库

    别的不多说 目前这个行业小团队比较多 xff0c 想要版本库的话 看下面 反正我个人一直在用 所以就推荐给你们 我不介绍github xff0c 和gitorious 因为github在私人库的时候是收费的 而最早的gitorious是没办
  • ibm服务器故障诊断面板报警信息解释|亮黄灯了

    诊断面板如下图 xff1a ps 指示灯 xff1a 当此指示灯发亮时 xff0c 表明电源 出现故障 xff0c 需要及时更换电源 temp 指示灯 xff1a 当此指示灯发亮时 xff0c 表明系统温度超出阈值级别 xff0c 检查风扇
  • 联想x3650m5服务器安装windows2008R2系统

    服务器型号 xff1a 联想x3650 M5 2U服务器 硬盘 xff1a 一块300G硬盘 阵列 xff1a raid0 系统 xff1a windowsserver2008R2系统 安装开始时间 xff1a 20180930晚上9点 客
  • 关于IDEA模块复制问题的解决方案分享

    在IDEA开发过程中有的时候可能一些准备工作比较繁琐 xff0c 这个时候有些小伙伴们就想到了复制一个module出来导入 xff0c 但是发现各种报错不能运行 xff0c 在这里给小伙伴们分享一种IDEAmodule复制的方案 xff0c
  • Excel VBA 函数返回值

    Excel VBA 函数返回值 Sub 定义一个过程 VB的函数定义格式与C有很大区别 xff1a 格式 xff1a span class token keyword Sub span 过程名 span class token punctu
  • C#,桌面编程入门(01)——按钮Button属性与事件、动态创建、快捷键、控件数组及自定义Button

    本文是 桌面编程入门 系列文章的开山之篇 桌面编程入门 系列文章主要介绍桌面编程的各种组件 xff0c Button xff0c ComboBox xff0c Panel xff0c WebBrowser 类似的文章非常多 xff0c 深度
  • 巧用F12调试工具js修改页面加载数目

    背景 xff1a 有147页 每页显示8条记录的总数据量 xff0c 在这些数据中查找是否存在指定的一条数据 查找 xff1a 页面使用CTR 43 F功能可以快速查找确定是否存在目标数据 xff0c 或者在F12reponse里查找 xf
  • 为什么官网上下载的JDK15为什么找不到sun.misc.Launcher类?

    正常jdk8以后官网上下载到的JDK包里面是没有开放sun misc Launcher等类的 xff0c 可能是因为官方不希望用户使用这些内部的类 xff0c 因此在后面的版本里就不再开放了 xff0c 但不代表不存在 xff0c 而是以系
  • Linux自学之旅-基础命令(shutdown关机重启命令)

    Linux自学之旅 基础命令 xff08 shutdown xff09 文章目录 前言一 shutdown能做什么 xff1f 二 shutdown使用1 关机2 重启 总结 前言 1 上一节我们讲述了tar命令用来打包并压缩的用法 xff
  • Vue结合后台详解导入导出Excel问题

    Vue完整前后台项目介绍 最近Vue项目中用到了导入导出功能 xff0c 在网上搜索了一番之后 xff0c 决定采用Blob方式 xff0c 这也是大家推荐的一种的方式 xff0c 特此做下记录 导出Excel功能 这里不谈别人怎么实现的
  • Windows10 和 archlinux双系统安装及配置

    原文地址 https www viseator com 2017 05 17 arch install 第一次装archLinux时 xff0c 感觉不是很明白各个命令的大致意思 xff0c 不久前Windows的系统出问题了 xff0c
  • 银河麒麟 Qt打包

    环境 xff1a 银河麒麟4 0 2 Qt 5 12 10 将编译好的Qt程序test打包 xff0c 并部署到另一台没有开发环境的Linux下 xff0c 将过程记录如下 xff1a 将编译好的可执行程序test放到一个新建文件夹内 例如
  • SmartSoftHelp 自定义开源C#代码生成器

    蓦然回首终结者SmartSoftHelp开发辅助工具MiniLite2 0迷你版 V3 5 自定义生成 dbhelper Model BLL DAL sqltxt UI 方便快捷 xff0c 支持自编码 xff0c 自编译 xff0c 自己
  • 游戏开发人员需要看的书籍

    编码习惯及设计基础 程序员修炼之道 http product dangdang com 9053091 html 这本书讲解的一些设计原理很实用 对设计感兴趣的同学可以一看 推荐指数 5星 图形渲染 客户端 3D绘图程序设计 http pr
  • 【c++】生产者与消费者问题

    单个生产者和单个消费者 include lt iostream gt include lt mutex gt include lt condition variable gt include lt Windows h gt using na
  • 基于springboot人事管理系统java项目介绍

    人事管理系统是基于java编程语言 xff0c springboot框架 xff0c mysql数据库开发 xff0c 本系统分为员工和管理员两个角色 xff0c 员工的主要功能有登陆系统 xff0c 个人信息更新 xff0c 查看工资 x
  • C#,生信软件实践(02)——DNA数据库EMBL格式详解及转为FASTA格式文件的源代码

    gt 生信老白写的基础代码 fasta MAYBENOANYUSAGE EMBL 与 GenBank 文件一脉相承 xff0c 建议先阅读 GenBank 文件详解 C xff0c 生信软件实践 xff08 03 xff09 DNA数据库G
  • Activity onNewIntent详解

    onNewIntent 的触发时间 xff1a onNewIntent png 如图所示 xff0c onCreate 和 onNewIntent 不会被同时调用 官方文档 xff1a onNewIntent added in API le