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月…...

阿里智能信息数据挖掘复盘
(嘻嘻——不嘻嘻) 挫败呜呜呜,钉钉忘装,还要手机登录,迟到三分钟。 一上来就问项目,没有自我介绍。 第一篇的重要特征是什么直接忘记,正负样本比,过拟合的判断标准,特…...

Flutter中图片是怎么在flutter上呈现出来的?
在Flutter中,图片的呈现是通过使用Image组件来实现的。Image组件是一个用于加载和显示图片的Widget,可以从本地文件、网络URL或内存中加载图片,并在应用界面上进行渲染。 图片在Flutter中的呈现过程如下: 加载图片: 使…...

使用 CNN 训练自己的数据集
CNN(练习数据集) 1.导包:2.导入数据集:3. 使用image_dataset_from_directory()将数据加载tf.data.Dataset中:4. 查看数据集中的一部分图像,以及它们对应的标签:5.迭代数据集 train_ds࿰…...

自动控制: 最小二乘估计(LSE)、加权最小二乘估计(WLS)和线性最小方差估计
自动控制: 最小二乘估计(LSE)、加权最小二乘估计(WLS)和线性最小方差估计 在数据分析和机器学习中,参数估计是一个关键步骤。最小二乘估计(LSE)、加权最小二乘估计(WLS&…...

基于VMware安装Linux虚拟机
1.准备Linux环境 首先,我们要准备一个Linux的系统,成本最低的方式就是在本地安装一台虚拟机。为了统一学习环境,不管是使用MacOS还是Windows系统的同学,都建议安装一台虚拟机。 windows采用VMware,Mac则采用Fusion …...

6、phpjm混淆解密和php反序列化
题目:青少年雏形系统 1、打开链接也是一个登入面板 2、尝试了sqlmap没头绪 3、尝试御剑,发现一个www.zip 4、下载打开,有一个php文件打开有一段phpjm混淆加密 5、使用手工解混淆 具体解法链接:奇安信攻防社区-phpjm混淆解密浅谈…...

Codeforces Round 909 (Div. 3) E. Queue Sort(模拟 + 贪心之找到了一个边界点)
弗拉德找到了一个由 n 个整数组成的数组 a ,并决定按不递减的顺序排序。 为此,弗拉德可以多次执行下面的操作: 提取数组的第一个元素并将其插入末尾; 将个元素与前一个元素对调,直到它变成第一个元素或严格大于前一个…...

设计模式基础——设计原则介绍
1.概述 对于面向对象软件系统的设计而言,如何同时提高一个软件系统的可维护性、可复用性、可拓展性是面向对象设计需要解决的核心问题之一。面向对象设计原则应运而生,这些原则你会在设计模式中找到它们的影子,也是设计模式的基础。往往判…...

【校园网网络维修】当前用户使用的IP与设备重定向地址中IP不一致,请重新认证
出现的网络问题:当前用户使用的IP与设备重定向地址中IP不一致,请重新认证 可能的原因: 把之前登录的网页收藏到浏览器,然后直接通过这个链接进行登录认证。可能是收藏网址导致的ip地址请求参数不一致。 解决方法: 方法…...

如何找到docker的run(启动命令)
使用python三方库进行 需要安装python解释器 安装runlike安装包 pip3 install runlike 运行命令 runlike -p <container_name> # 后面可以是容器名和容器id,-p参数是显示自动换行实验 使用docker启动一个jenkins 启动命令为 docker run -d \ -p 9002:80…...

Spring如何管理Bean的生命周期呢?
我们都知道,在面试的过程中,关于 Spring 的面试题,那是各种各样,很多时候就会问到关于 Spring的相关问题,比如 AOP ,IOC 等等,还有就是关于 Spring 是如何管理 Bean 的生命周期的相关问题&#…...