Android Activity 启动模式

Standard 启动模式

页面跳转顺序

MainActivity -> StandardActivity -> StandardActivity -> StandardActivity

页面栈 示例图 

任务栈中只存在MainActivity时

 

任务栈中存在MainActivity、StandardActivity

  

MainActivity -> StandardActivity 

 MainActivity -> StandardActivity -> StandardActivity 

MainActivity -> StandardActivity -> StandardActivity -> StandardActivity

通过ActivityManager查看页面栈

通过以下函数获取任务栈ID 、栈中Activity数量栈底Activity、栈顶Activity、栈中所有Activity

import android.app.Activity
import android.app.ActivityManager
import android.content.Context
import android.util.Log
import java.util.LinkedListclass Util {companion object {private val tag = Util::class.simpleNameval inactiveActivities = LinkedList<Activity>()@JvmStaticfun getAllActivity(context: Context) {val activityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager?val taskList = activityManager!!.getRunningTasks(1) // todo 获取最近运行的1个任务for (taskInfo in taskList) {// todo 获取栈顶Activityval topComponentName = taskInfo.topActivity// todo 获取栈底Activityval baseComponentName = taskInfo.baseActivity// todo 获取栈中Activity 数量val numActivity = taskInfo.numActivities// todo 获取任务IDval taskId = taskInfo.taskIdLog.i(tag, "$tag 当前任务栈...... 任务ID\t$taskId")Log.i(tag, "$tag 当前任务栈...... 栈中Activity数量\t$numActivity")if (baseComponentName != null) {Log.i(tag, "$tag 当前任务栈...... 栈底Activity:\t${baseComponentName.className}")}if (topComponentName != null) {Log.i(tag, "$tag 当前任务栈...... 栈顶Activity:\t${topComponentName.className}")}// todo 栈中所有Activity名称val activities= getInactiveActivities()Log.i(tag, "$tag 当前任务栈...... 所有Activity:\t$activities")Log.i(tag, "$tag 当前任务栈.....................................................")}}// todo 获取栈中所有Activity@JvmStaticfun getInactiveActivities(): List<Activity> {return inactiveActivities.toList()}}
}

注册监听所有Activity的事件

Application.ActivityLifecycleCallbacksApplication中的一个接口,调用registerActivityLifecycleCallbacks方法即可完成注册。用于全局监听每个Activity的生命周期、判断app前后状态等作用。

import android.app.Activity
import android.app.Application
import android.os.Bundle
import com.start.util.Utilclass MyApplication : Application() {override fun onCreate() {super.onCreate()registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {override fun onActivityResumed(activity: Activity) {}override fun onActivityPaused(activity: Activity) {}override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {// todo 当Activity创建时,添加到列表中if (!Util.inactiveActivities.contains(activity)) {Util.inactiveActivities.add(activity)}Util.getAllActivity(baseContext)}override fun onActivityStarted(activity: Activity) {}override fun o

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/58045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL覆盖索引

覆盖索引&#xff08;Covering Index&#xff09;是数据库优化中的一种重要技术 覆盖索引是指一个查询语句在执行时&#xff0c;所需的数据可以完全通过索引来获取&#xff0c;而无需访问实际的数据行。也就是说&#xff0c;查询语句所需的列都包含在了创建的索引中&#xff0c…

使用freemarker实现在线展示文档功能开发,包括数据填充

首先&#xff0c;在这个独属于程序员节日的这一天&#xff0c;祝大家节日快乐【求职的能找到心仪的工作&#xff0c;已经工作的工资翻倍】。 ---------------------------------------------------------------回到正文-----------------------------------------------------…

合约门合同全生命周期管理系统:企业合同管理的数字化转型之道

合约门合同全生命周期管理系统&#xff1a;企业合同管理的数字化转型之道 1. 引言 在现代企业中&#xff0c;合同管理已经不再是简单的文件存储和审批流程&#xff0c;而是企业合规性、风险管理和业务流程的关键环节之一。随着企业规模的扩大和合同数量的增加&#xff0c;传统…

web3.0 开发实践

优质博文&#xff1a;IT-BLOG-CN 一、简介 Web3.0也称为去中心化网络&#xff0c;是对互联网未来演进的一种概念性描述。它代表着对现有互联网的下一代版本的设想和期望。Web3.0的目标是通过整合区块链技术、分布式系统和加密技术等新兴技术&#xff0c;构建一个更加去中心化…

深入了解嵌入式硬件设计

嵌入式硬件设计是一个多学科交叉的领域&#xff0c;要求设计者不仅具备深厚的理论知识&#xff0c;还需要拥有丰富的实践经验。以下将从基础知识、设计流程、关键技术、实践技能等几个方面&#xff0c;对嵌入式硬件设计进行深入讲解。 一、基础知识 电子电路基础 数字电路&…

双非本秋招成功入职小米软开

大家好&#xff0c;我是程序员阿药。最近有位同学说用了这个刷题工具&#xff0c;入职小米软开了&#xff0c;推荐给大家。 简介 微学时光是一款专为计算机专业学生和IT行业求职者设计的面试刷题小程序&#xff0c;它汇集了丰富的计算机面试题和知识点&#xff0c;旨在帮助用…

Linux CentOS7下创建SFTP服务器

本文详细介绍了在Linux CentOS上部署安全文件传输协议&#xff08;SFTP&#xff09;服务器的全过程。SFTP基于SSH&#xff08;安全壳层协议&#xff09;提供文件传输服务&#xff0c;继承了SSH的安全特性&#xff0c;如数据加密、完整性验证和服务器认证等&#xff0c;确保数据…

速来!未发表!DTW-Kmeans-Transformer-BiLSTM组合模型!时序聚类+状态识别!

速来&#xff01;未发表&#xff01;DTW-Kmeans-Transformer-BiLSTM组合模型&#xff01;时序聚类状态识别&#xff01; 目录 速来&#xff01;未发表&#xff01;DTW-Kmeans-Transformer-BiLSTM组合模型&#xff01;时序聚类状态识别&#xff01;效果一览基本介绍程序设计参考…

考研要求掌握的C语言程度(堆排序)1

含义 堆排序就是把数组的内容在心中建立为大根堆&#xff0c;然后每次循环把根顶和没交换过的根末进行调换&#xff0c;再次建立大根堆的过程 建树的几个公式 一个数组有n个元素 最后一个父亲节点是n/2-1; 假如父亲节点在数组的下标为a 那么左孩子节点在数组下标为2*a1,…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-25

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-25 0. 前言 大语言模型在很多领域都有成功的应用&#xff0c;在本期计算机前沿技术进展研究介绍中&#xff0c;我们将带来一篇用大语言模型进行诺贝尔文学作品分析的论文。虽然有一定趁最近诺贝尔奖热潮的意味&…

【STM32 Blue Pill编程实例】-OLED显示HC-SR04超声波测距结果

OLED显示HC-SR04超声波测距结果 文章目录 OLED显示HC-SR04超声波测距结果1、HC-SR04超声波传感器介绍2、硬件准备及接线模块配置3.1 定时器配置3.2 OLED I2C接口配置3.3 HC-SR04引脚配置4、代码实现在本文中,我们将 HC-SR04 超声波传感器与 STM32 Blue Pill 开发板结合使用,并…

stm32单片机个人学习笔记12(DMA直接存储器存取)

前言 本篇文章属于stm32单片机&#xff08;以下简称单片机&#xff09;的学习笔记&#xff0c;来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记&#xff0c;只能做参考&#xff0c;细节方面建议观看视频&#xff0c;肯定受益匪浅。 STM32入门教程-2023版 细…

问:MySQL中的常用SQL函数整理?

在MySQL中&#xff0c;SQL函数是执行特定任务、简化复杂查询和操作数据的强大工具。这些函数可以分为多个类别&#xff0c;包括字符串函数、数学函数、日期和时间函数、聚合函数以及控制流函数等。以下是一些常用MySQL函数。 一、字符串函数 CONCAT(): 连接两个或多个字符串。…

Java最全面试题->数据库/中间件->RocketMQ面试题

文章目录 RocketMQ多个MQ如何选型?RocketMQ组成部分有哪些?RocketMQ消费模式有几种?消息重复消费如何解决?RocketMQ如何保证消息的顺序消费?RocketMQ如何保证消息不丢失?RocketMQ如何实现分布式事务?RocketMQ的消息堆积如何处理?RocketMQ 下边是我自己整理的面试题,基…

FreeRTOS的事件组

实时嵌入式系统必须对事件做出响应。FreeRTOS允许将事件传递给任务。此类功能的示例包括信号量和队列&#xff0c;两者都具有以下属性&#xff1a; 它们允许任务在“阻塞”状态下等待单个事件发生。  当事件发生时&#xff0c;它们会取消阻塞单个任务——取消阻塞的任务是等待…

【论文阅读】Tabbed Out: Subverting the Android Custom Tab Security Model

论文链接&#xff1a;Tabbed Out: Subverting the Android Custom Tab Security Model | IEEE Conference Publication | IEEE Xplore 总览 “Tabbed Out: Subverting the Android Custom Tab Security Model” 由 Philipp Beer 等人撰写&#xff0c;发表于 2024 年 IEEE Symp…

Pulsar mq 设置延迟消息模式 pulsar mq 发送延迟消息 pulsar如何发送消费延时消息

1. 本文使用spring 提供的pulsarTemplate. 内部对于pulsar client 封装了一层 2.生产者为&#xff1a; String fingerprint UUID.randomUUID().toString();# 可修改TimeUnit 改为小时&#xff0c;天。 pulsarTemplate.newMessage(fingerprint).withTopic("dddd")…

Spring Boot植物健康系统:智慧农业的新篇章

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

闯关leetcode——222. Count Complete Tree Nodes

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/count-complete-tree-nodes/description/ 内容 Given the root of a complete binary tree, return the number of the nodes in the tree. According to Wikipedia, every level, except possibl…

Linux LVS 通用命令行

LVS&#xff08;Linux Virtual Server&#xff09;是一种基于Linux操作系统的负载均衡技术&#xff0c;它通过网络负载均衡技术将客户端请求分发到多台实际服务器上&#xff0c;以提高系统的性能和可靠性。在LVS中&#xff0c;常用的命令行工具主要是ipvsadm&#xff0c;以及一…