Activity->Activity生命周期
<四大组件 android:name="xxx"android:exported="true" // 该组边能够被其他组件启动android:enabled="true" // 该组件能工与用户交互
</四大组件>
Activity
常用生命周期
- 启动
Activity
2024-05-29 03:53:57.401 21372-21372 yang I onCreate
2024-05-29 03:53:57.403 21372-21372 yang I onStart
2024-05-29 03:53:57.405 21372-21372 yang I onResume
Activity
切到后台,锁屏
2024-05-29 03:55:14.174 21372-21372 yang I onPause
2024-05-29 03:55:14.647 21372-21372 yang I onStop
2024-05-29 03:55:14.648 21372-21372 yang I onSaveInstanceState
Activity
返回前台
2024-05-29 03:55:42.337 21372-21372 yang I onRestart
2024-05-29 03:55:42.340 21372-21372 yang I onStart
2024-05-29 03:55:42.340 21372-21372 yang I onResume
Activity
旋转方向两次回来AndroidManifest.xml
文件中没有配置android:configChanges="screenSize|orientation"
2024-05-29 04:13:49.562 16759-16759 yang I onCreate
2024-05-29 04:13:49.565 16759-16759 yang I onStart
2024-05-29 04:13:49.567 16759-16759 yang I onResume
2024-05-29 04:14:00.009 16759-16759 yang I onPause
2024-05-29 04:14:00.014 16759-16759 yang I onStop
2024-05-29 04:14:00.015 16759-16759 yang I onSaveInstanceState
2024-05-29 04:14:00.015 16759-16759 yang I onDestroy
2024-05-29 04:14:00.077 16759-16759 yang I onCreate
2024-05-29 04:14:00.089 16759-16759 yang I onStart
2024-05-29 04:14:00.090 16759-16759 yang I onRestoreInstanceState
2024-05-29 04:14:00.090 16759-16759 yang I onResume
AndroidManifest.xml
文件中配置android:configChanges="screenSize|orientation"
2024-05-29 04:15:54.484 17090-17090 yang I onCreate
2024-05-29 04:15:54.486 17090-17090 yang I onStart
2024-05-29 04:15:54.488 17090-17090 yang I onResume
2024-05-29 04:16:05.746 17090-17090 yang I onConfigurationChanged
2024-05-29 04:16:12.112 17090-17090 yang I onConfigurationChanged
Activity
启动模式
standard
标准模式
- 每次启动
Activity
时,系统都会在当前Activity
栈创建一个新的Activity
实例,无论该Activity
是否已经存在
const val TAG = "Yang"
class MainActivity : AppCompatActivity() {var mImageView : MyImageView ?= nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)mImageView = findViewById(R.id.real_iv)mImageView?.setOnClickListener {val intent = Intent(this, MainActivity::class.java)startActivity(intent)}Log.i("yang", "$this onCreate")}override fun onStart() {super.onStart()Log.i("yang", "$this onStart")}override fun onResume() {super.onResume()Log.i("yang", "$this onResume")}override fun onPause() {super.onPause()Log.i("yang", "$this onPause")}override fun onStop() {super.onStop()Log.i("yang", "$this onStop")}override fun onDestroy() {super.onDestroy()Log.i("yang", "$this onDestroy")}override fun onRestart() {super.onRestart()Log.i("yang", "$this onRestart")}override fun onSaveInstanceState(outState: Bundle) {super.onSaveInstanceState(outState)Log.i("yang", "$this onSaveInstanceState")}override fun onRestoreInstanceState(savedInstanceState: Bundle) {super.onRestoreInstanceState(savedInstanceState)Log.i("yang", "$this onRestoreInstanceState")}override fun onConfigurationChanged(newConfig: Configuration) {super.onConfigurationChanged(newConfig)Log.i("yang", "$this onConfigurationChanged")}override fun onNewIntent(intent: Intent?) {super.onNewIntent(intent)Log.i("yang", "$this onNewIntent")}
}// log result
2024-05-29 05:01:46.737 26443-26443 yang I com.yang.app.MainActivity@54d9d4e onCreate
2024-05-29 05:01:46.739 26443-26443 yang I com.yang.app.MainActivity@54d9d4e onStart
2024-05-29 05:01:46.742 26443-26443 yang I com.yang.app.MainActivity@54d9d4e onResume
2024-05-29 05:01:49.573 26443-26443 yang I com.yang.app.MainActivity@54d9d4e onPause
2024-05-29 05:01:49.609 26443-26443 yang I com.yang.app.MainActivity@4c77c18 onCreate
2024-05-29 05:01:49.621 26443-26443 yang I com.yang.app.MainActivity@4c77c18 onStart
2024-05-29 05:01:49.622 26443-26443 yang I com.yang.app.MainActivity@4c77c18 onResume
2024-05-29 05:01:49.983 26443-26443 yang I com.yang.app.MainActivity@54d9d4e onStop
2024-05-29 05:01:49.984 26443-26443 yang I com.yang.app.MainActivity@54d9d4e onSaveInstanceState
singleTop
单顶模式
- 如果
Activity
位于Activity
栈的栈顶,会复用这个实例,并回调onNewIntent()
方法。没有处于栈顶,还会继续创建新的实例
2024-05-29 06:58:47.124 2160-2160 yang I com.yang.app.MainActivity@54d9d4e onCreate
2024-05-29 06:58:47.126 2160-2160 yang I com.yang.app.MainActivity@54d9d4e onStart
2024-05-29 06:58:47.128 2160-2160 yang I com.yang.app.MainActivity@54d9d4e onResume
2024-05-29 06:58:49.444 2160-2160 yang I com.yang.app.MainActivity@54d9d4e onPause
2024-05-29 06:58:49.444 2160-2160 yang I com.yang.app.MainActivity@54d9d4e onNewIntent
2024-05-29 06:58:49.445 2160-2160 yang I com.yang.app.MainActivity@54d9d4e onResume
singleTask
单任务模式
- 当前
Activity
栈只会存在这一个Activity
实例,如果Activity
位于Activity
栈的栈顶,会复用这个实例,并回调onNewIntent()
方。如果没有处于Activity
栈的栈顶,会清除要启动的Activity
上面的所有Activity
2024-05-29 07:54:20.568 7933-7933 yang I com.yang.app.MainActivity@4db5049 onCreate
2024-05-29 07:54:20.576 7933-7933 yang I com.yang.app.MainActivity@4db5049 onStart
2024-05-29 07:54:20.579 7933-7933 yang I com.yang.app.MainActivity@4db5049 onResume
2024-05-29 07:54:23.027 7933-7933 yang I com.yang.app.MainActivity@4db5049 onPause
2024-05-29 07:54:23.054 7933-7933 yang I com.yang.SecondActivity@7657d8c onCreate
2024-05-29 07:54:23.065 7933-7933 yang I com.yang.SecondActivity@7657d8c onStart
2024-05-29 07:54:23.066 7933-7933 yang I com.yang.SecondActivity@7657d8c onResume
2024-05-29 07:54:23.421 7933-7933 yang I com.yang.app.MainActivity@4db5049 onStop
2024-05-29 07:54:23.422 7933-7933 yang I com.yang.app.MainActivity@4db5049 onSaveInstanceState
2024-05-29 07:54:25.331 7933-7933 yang I com.yang.SecondActivity@7657d8c onPause
2024-05-29 07:54:25.335 7933-7933 yang I com.yang.app.MainActivity@4db5049 onRestart
2024-05-29 07:54:25.338 7933-7933 yang I com.yang.app.MainActivity@4db5049 onStart
2024-05-29 07:54:25.338 7933-7933 yang I com.yang.app.MainActivity@4db5049 onNewIntent
2024-05-29 07:54:25.338 7933-7933 yang I com.yang.app.MainActivity@4db5049 onResume
2024-05-29 07:54:25.683 7933-7933 yang I com.yang.SecondActivity@7657d8c onStop
2024-05-29 07:54:25.684 7933-7933 yang I com.yang.SecondActivity@7657d8c onDestroy
singleInstance
单实例模式
- 所有
Activity
栈只能存在这一个Activity
实例,意味着这个Activity
栈不会有其他Activity
的实例。如果singleInstance
启动模式启动的Activity
再去启动的另外的Activity
,会再创建一个新的Activity
栈,另外的Activity
存在这个新创建的栈中。从Recent最近打开任务可以看到两个应用窗口
- 查看当前任务栈启动
Activity
数量
val activityManager = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
val numActivities = activityManager.appTasks[0].taskInfo.numActivities
Log.i("yang", "当前{$this}栈启动Activity数量 = $numActivities")// log result
2024-05-29 08:14:09.137 11888-11888 yang I 当前{com.yang.app.MainActivity@8ae877c}栈启动Activity数量 = 1
2024-05-29 08:14:09.137 11888-11888 yang I com.yang.app.MainActivity@8ae877c onCreate
2024-05-29 08:14:09.147 11888-11888 yang I com.yang.app.MainActivity@8ae877c onStart
2024-05-29 08:14:09.149 11888-11888 yang I com.yang.app.MainActivity@8ae877c onResume
2024-05-29 08:14:11.872 11888-11888 yang I com.yang.app.MainActivity@8ae877c onPause
2024-05-29 08:14:11.902 11888-11888 yang I 当前{com.yang.SecondActivity@754bbdb}栈启动Activity数量 = 1
2024-05-29 08:14:11.903 11888-11888 yang I com.yang.SecondActivity@754bbdb onCreate
2024-05-29 08:14:11.915 11888-11888 yang I com.yang.SecondActivity@754bbdb onStart
2024-05-29 08:14:11.916 11888-11888 yang I com.yang.SecondActivity@754bbdb onResume
2024-05-29 08:14:12.286 11888-11888 yang I com.yang.app.MainActivity@8ae877c onStop
2024-05-29 08:14:12.286 11888-11888 yang I com.yang.app.MainActivity@8ae877c onSaveInstanceState
相关文章:
Activity->Activity生命周期
<四大组件 android:name"xxx"android:exported"true" // 该组边能够被其他组件启动android:enabled"true" // 该组件能工与用户交互 </四大组件>Activity常用生命周期 启动Activity 2024-05-29 03:53:57.401 21372-21372 yang …...

乐鑫ESP串口驱动安装,安装cp210x驱动
windows11安装cp210x驱动: 1:第一步官网下载驱动: 官网地址如下: CP210x USB to UART Bridge VCP Drivers - Silicon Labs 第二步:解压文件夹并安装如图所示: 3:第三步安装成功后会给你个提示…...

Django缓存
由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,若某个时…...
Python 元组
(1)元组中只包含一个元素时,需要在元素后面添加逗号: tup1 (50,); (2)元组中的元素值是不允许修改的,但我们可以对元组进行连接组合: tup1 (12, 34.56); tup2 (abc, xyz);# 以…...

JAVA面试题大全(十八)
1、说一下 jvm 的主要组成部分?及其作用? 类加载器(ClassLoader)运行时数据区(Runtime Data Area)执行引擎(Execution Engine)本地库接口(Native Interface)…...

如何利用Firebase Hosting来托管网站
文章目录 如何利用Firebase Hosting来托管网站前提条件详细步骤1. 安装 Firebase CLI2. 登录 Firebase3. 初始化 Firebase 项目4. 准备网站文件5. 部署到 Firebase6. 配置自定义域名(可选) 常见问题 如何利用Firebase Hosting来托管网站 以下是更详细的…...

揭秘“循环消费”模式:消费即收益,购物新体验
亲爱的朋友们,大家好,我是李华。今天,我要为大家介绍一种正在悄然兴起的商业模式——“循环消费”。你是否曾想过,在消费的同时,还能获得额外的收益和回馈?这种新型模式正在逐渐改变我们的购物体验。 近期&…...

图片怎样在线改像素大小?电脑快速修改图片大小的方法
在设计图片的时候下载的图片尺寸一般会比较大,在网上使用经常会因为尺寸的问题导致无法正常上传,那么如何快速在线改图片大小呢?想要修改图片尺寸可以在直接选择网上的图片改大小工具的功能来快速完成修改,操作简单方便使用&#…...

SELINUX=enforcing时无法启动httpd服务的解决方案(semanage命令以及setroubleshoot-server插件的妙用)
一、问题描述: 当/etc/selinux/conf被要求必须是SELINUXenforcing,不被允许使用setenforce 0宽松模式 我们启动httpd就会报错: Job for httpd.service failed because the control process exited with error code. See "systemctl s…...

【C++】list的使用方法和模拟实现
❤️欢迎来到我的博客❤️ 前言 list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后…...

【物联网实战项目】STM32C8T6+esp8266/mqtt+dht11+onenet+uniapp
一、实物图 前端uniapp效果图(实现与onenet同步更新数据) 首先要确定接线图和接线顺序: 1、stm32c8t6开发板连接stlinkv2下载线 ST-LINK V2STM323.3V3.3VSWDIOSWIOSWCLKSWCLKGNDGND 2、ch340串口连接底座(注意RXD和TXD的连接方式…...
Pyhton 二叉树层级遍历
class TreeNode:def __init__(self, val0, leftNone, rightNone):self.val valself.left leftself.right rightclass Solution:def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:res []# 空节点,直接返回if not root:return resque [roo…...
Flutter 中的 FadeTransition 小部件:全面指南
Flutter 中的 FadeTransition 小部件:全面指南 在 Flutter 中,动画是一种吸引用户注意力并提供流畅用户体验的强大工具。FadeTransition 是 Flutter 提供的一个动画小部件,它允许子组件在不透明度上进行渐变,从而实现淡入和淡出效…...
缓存存储器:性能提升的关键
目录 基本原理 主存与缓存的地址映射 主存的替换策略 缓存的写操作策略 Pentium 4 的缓存组织 使用多级缓存减少缺失损失 结论 在计算机系统中,缓存存储器(Cache Memory)发挥着至关重要的作用。它充当处理器和主存之间的高速缓冲区&am…...
『大模型笔记』工程师的LLMs简介!
💡工程师的LLMs简介 ! 文章目录 1. Embeddings Conceptually(嵌入的概念)1.1. One-hot Encodings(独热编码)1.2. Embeddings(嵌入)2. LLM Basics(LLM 基础知识)3. Autoregressive LLMs(自回归LLMs)4. Where to go from here(何去何从?)5. 参考文献https://devo…...

Vue中的常用指令
Vue 会根据不同的【指令】,针对标签实现不同的【功能】 概念:指令(Directives)是 Vue 提供的带有 v- 前缀 的 特殊 标签属性。 为啥要学:提高程序员操作 DOM 的效率。 vue 中的指令按照不同的用途可以分为如下 6 大…...

百度页面奔跑的白熊html、css
一、相关知识-动画 1.基本使用:先定义再调用 2. 调用动画 用keyframes定义动画(类似定义类选择器) keyframes动画名称{ 0%{ width:100px; } 100%{ width:200px; } } 使用动画 div { width:200px; height:200px; background-…...
Day-02面向对象
一、匿名函数 和函数的作用一致,都是进行代码逻辑的封装, 区别1 在定义时,匿名函数可以不指定函数的名字 区别2 匿名函数执行实现简单的计算 区别3 匿名函数会自动将计算的结果返回 定义格式 lambda 参数1,参数2...:计算逻辑(参数的处理逻辑…...

Sentinel-2 哨兵二号数据介绍及下载
1 Sentinel-2简介 SENTINEL-2 is a European wide-swath, high-resolution, multi-spectral imaging mission. Sentinel-2 是高分辨率多光谱成像卫星,一颗卫星的重访周期为10天,两颗互补,重访周期为5天。分为2A和2B两颗卫星。2A于2015年6月…...
阿里智能信息数据挖掘复盘
(嘻嘻——不嘻嘻) 挫败呜呜呜,钉钉忘装,还要手机登录,迟到三分钟。 一上来就问项目,没有自我介绍。 第一篇的重要特征是什么直接忘记,正负样本比,过拟合的判断标准,特…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...

初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
Python实现简单音频数据压缩与解压算法
Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中,压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言,提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...