Android基础知识(七):Activity互调之间的生命周期变化与onNewIntent()触发机制

2023-05-16

Android基础知识(七):Activity互调之间的生命周期变化与onNewIntent()触发机制

一、Activity切换的生命周期
前面Android基础知识(五):Activity的生命周期一文中,提到的关于Activity的生命周期只是单个Activity的生命周期,没有说明从一个Activity进入另一个Activity时,或者从一个Activity返回到上一个Activity时这些函数的调用顺序。
从一个Activity进入另一个Activity的函数调用顺序如下。
在这里插入图片描述
从上图可以看到,Activity B在被创建之前(调用onCreate之前),Activity A需要先完成onPause的回调,即前文所说的,onPause方法执行之后,新Activity的onResume方法才会执行
因此onPause方法中虽然可以做一些数据存储或者动画停止或者资源的释放,但是不能太耗时。
从Activity B返回到上一个Activity(A)的函数回调顺序图如下。
在这里插入图片描述
上图考虑的是Activity A完全不可见的情况下,Activity A会回调onStop方法。

二、onNewIntent()触发机制
笔记:Android基础知识(六):Activity的启动模式中,提到了Activity的四种启动模式,在启动模式singleTask和singleTop中,由于系统会判断返回栈中是否存在实例,若存在(singleTop还要求处于栈顶)实例,那么系统会将请求发送到该实例上,因此不会调用常规的onCreate方法,而是调用onNewIntent方法
如下所示为onNewIntent调用时机图。
在这里插入图片描述
当Activity(假设为A)的launchMode为singleTop且A的实例处于栈顶,或者launchMode为singleTask且A的实例已经在栈里(无论是栈顶还是栈中),再次启动Activity A时,便不会调用onCreate()去产生新的实例,而是调用onNewIntent()并重用返回栈里的A实例
如果A在栈顶,那么方法回调的调用顺序依次为A.onPause() -> A.onNewIntent() -> A.onResume()。A的launchMode可以为singleTo或者是singleTask。
如果A不在栈顶,此时它处于A.onStop()状态,当再次启动时,调用顺序依次是A.onStop() -> A.onNewIntent() -> A.onRestart() -> A.onStart() -> A.onResume()。A的launchMode只能是singleTask。

三、onNewIntent()注意事项

  1. 系统kill后台Activity
    需要注意的是Android系统随时会kill后台Activity,如果Activity被kill,那么系统就会调用onCreate方法,而不是调用onNewIntent方法,因此为了解决这个问题,onCreate和onNewIntent方法中需要调用同一个处理数据的方法
    在这里插入图片描述
  2. onNewIntent()的setIntent()和getIntent()
    在使用getIntent()方法获取Intent之前,需要调用setIntent(Intent)方法,否则getIntent()获取的数据将不是所期望的结果。
    getIntent()方法返回的依旧是原来的Intent,需要调用setIntent(Intent)方法更新Intent
    在这里插入图片描述

参考资料:Android activity onNewIntent调用时机
Android:onNewIntent()触发机制及注意事项

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

Android基础知识(七):Activity互调之间的生命周期变化与onNewIntent()触发机制 的相关文章

  • 生产者消费者问题的C语言实现

    实验六 生产者 消费者问题实验 一 实验目的 掌握Linux下生产者 消费者问题算法的实现 二 实验原理 1 clone系统调用 xff1a 功能 xff1a 创建一个轻进程或线程 用法 xff1a intclone int fn void
  • 项目中使用ts的一些技巧

    项目上使用ts一年多了 xff0c 一边写 xff0c 一边看 xff0c 总结了一些小技巧 xff0c 写了一些分享给大家 xff0c 如果对你有所帮助就转评赞三连来一个 xff0c 那么我们开始今天的正题 xff1b 1 type联合类
  • 史上最全的ubuntu服务器搭建环境教程~~~

    ubuntu服务器搭建环境 1 先安装xshell xff1a 远程服务器连接 xff08 取代直接在浏览器 上 访问 xff09 2 安装xftp xff08 ftp文件传输 xff09 直接双击红色圈圈即可 3 安装mysql数据库 x
  • ubuntu server 18.04 启用root账户自动登录

    新安装Ubuntu server 18 04 后 xff0c 不能使用root账户进行ssh登录 解决方案 设置root用户密码 sudo passwd root 修改文件 usr share lightdm lightdm conf d
  • THML基础<2>

    一 基本的JavaScript命令document write 打印指定的文本内容到页面上 alert 弹出框 lt script type 61 34 text javascript 34 gt document write 34 Hel
  • 【机翻】Contrastive Learning based Hybrid Networks for Long-Tailed Image Classification

    Contrastive Learning based Hybrid Networks for Long Tailed Image Classification Abstract 在长尾图像分类中 xff0c 判别式图像表示的学习起着非常重要
  • 视图绑定(ViewBinding )与数据绑定(Databinding)

    视图绑定 xff08 ViewBinding xff09 与数据绑定 xff08 Databinding xff09 什么是ViewBinding viewbinding是android jetpack的一个特性 xff0c 通过viewb
  • 百度移动端面试回忆

    百度一面 xff1a 1 自我介绍 2 悲观锁和乐观锁 乐观锁 xff1a 总是认为不会产生并发问题 xff0c 每次去取数据的时候总认为不会有其他线程对数据进行修改 xff0c 因此不会上锁 xff0c 但是在更新时会判断其他线程在这之前
  • Spring知识点整理

    目录 Spring是什么 xff1f 对AOP的理解 解释一下Spring AOP里面的几个名词 Spring AOP 和AspectJ AOP有什么区别 JDK动态代理和CGLIB动态代理的区别 JavaConfig方式如何启用AOP 如
  • Method threw ‘java.lang.IllegalStateException‘ exception. Cannot evaluate org.apache.hadoop.mapreduc

    在本地调试hadoop mapreduc时断点看到这个信息 xff0c 且程序执行不成功 xff0c 以为是这个问题导致的 xff0c 网上查了很久也没有解决办法 xff0c 后来发现这个并不影响主要功能 如果不想看到它可以在idea进行配
  • Thread.sleep()关于让不让出cpu时间片

    1 证明 思路 xff1a 反证法 假如Thread sleep xff0c 不让出cpu时间片 xff0c 创建1000个线程 xff0c 每个线程执行sleep 方法 则cpu的使用率一定很高 xff0c 贴上代码 xff1a publ
  • 阿里巴巴校园招聘2019面试总结

    写在前面 面的岗位是c 43 43 开发 xff0c 二面跪了 xff0c 但依然想些出来分享一下 博主4月份开始着手找实习 xff0c 期间面过两次阿里都挂在第一面 xff0c 7月份至今在科大讯飞实习 xff0c 这期间内推阿里 xff
  • YY直播黑盒测试工程师笔试题

    1 请写出二进制数10111101对应的八进制 十六进制 十进制 2 黑盒测试用例的设计方法有哪些 xff1f 3 你所在项目用到的互联网协议有哪些 xff1f 请列举 4 数据库DB有两张表 xff0c 一张学生信息表Student xf
  • 如何判断是客户端问题还是服务器问题

    举个例子 xff0c 下载了个词典PC客户端 xff0c 发现词典上的一些解析出现是HTML代码 xff0c 例如 lt b gt lt b gt 什么的 xff0c 用fiddler抓包一下相关的接口jsonapi xff0c 发现相应的
  • U盘系统、格式化等问题的解决办法

    一 U盘快速格式化与正常格式化区别 1 快速格式化时间非常短 基本上瞬间完成 xff0c 如果硬盘有坏道 xff0c 不会出现任何提示 正常格式化时间非常的长 1 2 3小时不等 xff0c 但会在格式化的时候全面检测硬盘 xff0c 如果
  • python经典书籍推荐-7本经典的Python书籍,你都读过了么?

    许多程序员都认为Python是最适合作为入门的编程语言 xff0c 而有的程序员却认为Python是你应该学的最后一门编程语言 xff0c 无论如何 xff0c 毋庸置疑Python是一门非常流行的编程语言 xff0c 根据TIOBE In
  • python画轨迹曲线-matplotlib绘制随机行走轨迹图

    coding utf 8 author 61 39 pythonwu 39 date 61 34 2018 6 15 16 09 34 from random import choice randint import matplotlib
  • python游戏编程入门书籍推荐-游戏编程入门书籍推荐:想要游戏编程尽快入门这些书不要错过...

    游戏编程一直都是编程之中的一大热点 xff0c 这也是由于游戏本身的火热造成的结果 xff0c 所以每年都有很多人在关注着游戏编程 介于此小编今天就来将一些好的游戏编程入门书籍推荐给大家 xff0c 希望对想要了解和学习游戏编程的朋友能够有
  • 用python画关系网络图-使用Python的networkx绘制精美网络图教程

    最近因为数学建模3天速成Python 然后做了一道网络的题 xff0c 要画网络图 在网上找了一些 xff0c 发现都是一些很基础的丑陋红点图 xff0c 并且关于网络的一些算法也没有讲 xff0c 于是自己进http networkx g
  • reactor和proactor模式

    首先就第一篇 Reactor模式 xff0c 或者叫反应器模式 做一下笔记 xff1a 刚开店做生意 xff0c 老板为了给顾客一个美好的印象 xff0c 给顾客最好的服务 xff0c 一对一 随着经营的生意越来越好 xff0c 顾客多了

随机推荐

  • 进程间通信的方式——信号、管道、消息队列、共享内存

    进程间通信的方式 信号 管道 消息队列 共享内存 多进程 xff1a 首先 xff0c 先来讲一下fork之后 xff0c 发生了什么事情 由fork创建的新进程被称为子进程 xff08 child process xff09 该函数被调用
  • 利用netstat查看http为短连接还是长连接?

    最近 xff0c 公司在做Redis替换memcached的项目 xff0c 那mc可以设置是长连接 xff0c 那组件中的Redis到底用的是长连接还是短连接呢 xff1f 大牛军哥只给我一个命令 xff1a netstat anp gr
  • 系统总体结构设计

    系统总体结构设计 系统设计工作应该自顶向下地进行 首先设计总体结构 xff0c 然后再逐层深入 xff0c 直至进行每一个模块的设计 总体设计主要是指在系统分析的基础上 xff0c 对整个系统的划分 xff08 子系统 xff09 机器设备
  • 业务层 、服务层、数据层、表现层

    表现层 xff1a 它一方面为用户提供了交互的工具 xff0c 另一方面也为显示和提交数据实现了一定的逻辑 xff08 页面展示和各种交互包括提交 xff09 业务逻辑层 xff1a 包含了系统所需要的所有功能上的算法和计算过程 xff0c
  • Java FTPClient上传图片

    首先要使用common net的包 xff1a FTP服务器搭建过程 xff1a https mp csdn net postedit 88722082 package com taotao test ftp import java io
  • 直播疑难杂症排查(7)— 黑屏、花屏、闪屏问题

    本文是 直播疑难杂症排查 系列的第七篇文章 xff0c 我们来重点看看直播中常见的各种黑屏 花屏 闪屏问题 首先我们要明白 xff0c 黑屏 花屏 闪屏等问题 xff0c 可能是推流端的问题 xff0c 也可能是播放器的问题 xff0c 遇
  • 视频编码:H.264编码

    本文参考毕厚杰老师 新一代视频压缩编码标准 H 264 AVC 一书以及雷霄骅博客 视音频编解码技术零基础学习方法 整理 1 概念部分 xff1a H 264编码 xff1a 视频编解码技术有两套标准 xff0c 国际电联 xff08 IT
  • war包方式部署solo博客

    solo xff0c 一款小而美的博客系统 xff0c GitHub xff1a https github com b3log solo 环境和文件准备 服务器 xff1a 用的阿里云服务器 xff0c 系统是 CentOS 7 3 64
  • 游戏服务器之网关实现

    网关需要与客户端保证连接 这里网关使用Netty4来做为网络通信框架 它也是目前在Java游戏服务器开发中 xff0c 长连接使用最多的框架 1 xff0c 管理与客户端的连接 客户端连接到网关之后 xff0c 并且验证过之后 xff0c
  • zeromq源码分析笔记之准备

    zeromq这个库主要用于进程通信 xff0c 包括本地进程 网络通信 xff0c 涉及到一些基础知识 xff0c 主要包括管道通信 xff0c socket编程的内容 xff0c 反应器模式 xff08 使用IO多路复用实现 xff09
  • MySQL灵魂十连

    1 SQL语句执行流程 MySQL大体上可分为Server层和存储引擎层 两部分 Server层 xff1a 连接器 xff1a TCP握手后服务器来验证登陆用户身份 xff0c A用户创建连接后 xff0c 管理员对A用户权限修改了也不会
  • 前端面试知识点

    本专题按照以下几个方便进行整理 xff1a HTTP amp amp 浏览器HTML amp amp CSSJS TS ES6VueReact构建工具 amp amp 工程化性能优化 适合初次全面复习的同学 xff0c 查缺补漏 xff0c
  • 使用matplotlib绘制动画

    使用matplotlib绘制动画的步骤 本文采用moviewriter来绘制 xff0c 避免采用matplotlib animition的动画绘制方法 xff0c 将动画简化为图片一帧一帧播放 使用总共三步 xff0c 如下代码所示 补充
  • CUDA与cuDNN

    1 什么是CUDA CUDA ComputeUnified Device Architecture xff0c 是显卡厂商NVIDIA推出的运算平台 CUDA是一种由NVIDIA推出的通用并行计算架构 xff0c 该架构使GPU能够解决复杂
  • JAVAFX 简易项目构建从0到1全流程

    1 安装JDK 2 安装SceneBuilder 可集成到eclipse等IDE中 3 在IDE中新建Java Project项目 并按设计的架构设计建立代码架构 例如 xff1a 4 新建要搭建的界面fxml文件 xff0c 用Scene
  • Pandas DataFrame

    http pandas pydata org pandas docs stable api html dataframe 构造函数 方法描述DataFrame data index columns dtype copy 构造数据框 属性和数
  • Android Settings定制

    android frameworks base packages SettingsLib 7 0重构Settings后多出来的部分 android frameworks base packages SettingsProvider sett
  • GNOME图形界面的基本操作

    成功登录进入CentOS系统之后 xff0c 我们首先看到的桌面就是GNOME图形界面 xff0c 下面来看一下相关的基本操作 个性化设置 1 xff0c 设置屏幕分辨率 进入菜单 2 xff0c 更换桌面背景 进入下面菜单 选择一张背景图
  • 连接服务器VNC

    1 xff0c 启动vnc vncserver 2 xff0c 提示输入密码 3 xff0c Would you like to enter a view only password y n 选择n 4 xff0c 会生成一个端口号 5 更
  • Android基础知识(七):Activity互调之间的生命周期变化与onNewIntent()触发机制

    Android基础知识 xff08 七 xff09 xff1a Activity互调之间的生命周期变化与onNewIntent 触发机制 一 Activity切换的生命周期 前面Android基础知识 xff08 五 xff09 xff1a