《第一行代码:Android》第三版-3.4.4体验Activity的生命周期
本文的代码是在主Activity中,重载了几个生命周期函数,在日志中打印出对应的日志信息,有两个按钮,负责启动另外的Activity,并回到主Activity 由此查看日志,来体会生命周期。
MainActivity.kt 文件如下
package com.example.newactivitylifecycletestimport android.content.Intent
import android.os.Bundle
import android.util.Log
import android.widget.Button
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import com.example.newactivitylifecycletest.ui.theme.NewActivityLifeCycleTestThemeclass MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)Log.d("MainActivity","onCreate:Activity 第一次被创建的时候调用")setContentView(R.layout.activity_main)val startNormalActivity:Button = findViewById(R.id.startNormalActivity)//后加的代码startNormalActivity.setOnClickListener{val intent= Intent(this,NormalActivity::class.java)startActivity(intent)}val startDialogActivity:Button = findViewById(R.id.startDialogActivity)//后加的代码startDialogActivity.setOnClickListener{val intent= Intent(this,DialogActivity::class.java)startActivity(intent)}/*setContent {NewActivityLifeCycleTestTheme {// A surface container using the 'background' color from the themeSurface(modifier = Modifier.fillMaxSize(),color = MaterialTheme.colorScheme.background) {Greeting("Android")}}}*/}override fun onStart(){super.onStart()Log.d("MainActivity","onStart:在Activity由不可见变为可见的时候调用")}override fun onResume(){super.onResume()Log.d("MainActivity","onResume:在Activity准备好和用户进行交互的时候调用")}override fun onPause(){super.onPause()Log.d("MainActivity","onPause:在系统准备去启动或者恢复另一个Activity的时候调用")}override fun onStop(){super.onStop()Log.d("MainActivity","onStop:在Activity完全不可见的时候调用")}override fun onDestroy(){super.onDestroy()Log.d("MainActivity","onDestroy:在Activity被销毁之前调用")}override fun onRestart(){super.onRestart()Log.d("MainActivity","onRestart:在Activity由停止状态变为运行状态之前调用,即重启之后")}
}
NormalActivity.kt 和DialogActivity.kt 内容不重要,就略过了。
activity_main是主Activity的布局文件,就是声明了两个按钮。
内容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><Buttonandroid:id="@+id/startNormalActivity"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Start NormalActivity"tools:ignore="MissingConstraints" /><Buttonandroid:id="@+id/startDialogActivity"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Start DialogActivity"tools:ignore="MissingConstraints" /></LinearLayout>
运行起来会看到界面:
这个时候,日志会出现很多内容,我们只需要关注这三个:
2023-11-29 20:46:12.370 32638-32638 MainActivity com...mple.newactivitylifecycletest D onCreate:Activity 第一次被创建的时候调用
2023-11-29 20:46:12.508 32638-32638 MainActivity com...mple.newactivitylifecycletest D onStart:在Activity由不可见变为可见的时候调用
2023-11-29 20:46:12.510 32638-32638 MainActivity com...mple.newactivitylifecycletest D onResume:在Activity准备好和用户进行交互的时候调用
可以想得出来,一个Activity先是被创建,然后是从不可见变为可见,然后是为和用户交互做准备。
这个时候,如果点击startNormalActivity按钮,会出现这个activity,这个就是中间显示出来一段文字。
,这个normalActivity会压盖原来的mainActivity,这个时候,日志中会出现:
2023-11-29 21:33:35.867 32638-32638 MainActivity com...mple.newactivitylifecycletest D onPause:在系统准备去启动或者恢复另一个Activity的时候调用
2023-11-29 21:33:36.812 32638-32638 MainActivity com...mple.newactivitylifecycletest D onStop:在Activity完全不可见的时候调用
然后这个时候操作上用鼠标点击虚拟出来的手机的back按钮,我虚拟的是Pixel_API_30,这个时候界面回到了mainActivity(就是有两个按钮的界面)再来看看日志会出现:
2023-11-29 21:38:16.891 32638-32638 MainActivity com...mple.newactivitylifecycletest D onRestart:在Activity由停止状态变为运行状态之前调用,即重启之后
2023-11-29 21:38:16.891 32638-32638 MainActivity com...mple.newactivitylifecycletest D onStart:在Activity由不可见变为可见的时候调用
2023-11-29 21:38:16.893 32638-32638 MainActivity com...mple.newactivitylifecycletest D onResume:在Activity准备好和用户进行交互的时候调用
这个时候操作上点击第二个按钮:StarDialogActivity,这个DialogActivity由于是对话框式的,故并没有压盖mainActivity,点击后出现界面如下:
这个时候日志中出现:
2023-11-29 21:41:55.247 32638-32638 MainActivity com...mple.newactivitylifecycletest D onPause:在系统准备去启动或者恢复另一个Activity的时候调用
这个时候,如果点击虚拟出来的手机的back箭头,就回到了mainActivity,这个时候日志会出现:
2023-11-29 21:44:26.052 32638-32638 MainActivity com...mple.newactivitylifecycletest D onResume:在Activity准备好和用户进行交互的时候调用
对理解Activity的生命周期有一定的帮助。
相关文章:
《第一行代码:Android》第三版-3.4.4体验Activity的生命周期
本文的代码是在主Activity中,重载了几个生命周期函数,在日志中打印出对应的日志信息,有两个按钮,负责启动另外的Activity,并回到主Activity 由此查看日志,来体会生命周期。 MainActivity.kt 文件如下 pac…...
用java编写一个网络聊天室
网络聊天室 服务器: 1.启动服务器,在服务器端循环监听客户端的连接 try {ServerSocket serverSocketnew ServerSocket(6622);System.out.println("服务器已启动");while(true){//把客户端实例添加到sockets里Socket socketserverSocket.acc…...
Opencv颜色追踪
废话不多说直接上代码!! # 这是一个示例 Python 脚本。 import cv2 import numpy as npdef track_object():# 打开摄像头外接cap cv2.VideoCapture(0)while True:# 读取摄像头帧# ret(Return Value)是一个布尔值,表示…...
计算机网络——网络可靠性及网络出口配置
1. 前言: 学习目标: 1.了解链路聚合的作用 2. 了解ACL的工作原理 3. 了解NAT的工作原理和配置 2. 网络可靠性方案 网络可靠性是指网络在面对各种异常情况或故障时,能够维持正常运行和提供服务的能力。这包括防止网络中断、减小数据丢失的可能…...
在虚拟机搭建nignx,和使用本地访问nginx的情况
下载nginx yum install nginx 查看nginx是否安装成功。 nginx -v nginx的配置文件的目录和资源的目录。 先到nginx.conf的目录下,在 /etc/nginx/nginx.conf,编辑它。 vi /etc/nginx/nginx.conf 可以看到默认的html的目录。在 /usr/share/nginx/html 下面…...
Java数据结构之《直接插入排序》问题
一、前言: 这是怀化学院的:Java数据结构中的一道难度中等的一道编程题(此方法为博主自己研究,问题基本解决,若有bug欢迎下方评论提出意见,我会第一时间改进代码,谢谢!) 后面其他编程题只要我写完…...
向量场中的几个恒等式
向量场中的几个恒等式 1. ∇ 2 A ∇ ∇ ⋅ A − ∇ ∇ A \nabla ^2 A \nabla \nabla\cdot A-\nabla \times\nabla\times A ∇2A∇∇⋅A−∇∇A 2. ∇ ⋅ ∇ A 0 \nabla \cdot \nabla \times A 0 ∇⋅∇A0 3. ∇ ∇ ϕ 0 \nabla \times \nabla \phi0 ∇∇ϕ0...
异行星低代码平台--第三方插件对接:钉钉平台对接(一)
异行星低代码平台可以集成钉钉,实现单点登录、消息推送和组织机构同步。 提示 此功能需要企业版授权才能使用。 钉钉集成 单点登录 异行星低代码平台集成到钉钉后,只要使用钉钉账户登录钉钉客户端,即可在钉钉中直接使用管理后台&#…...
MyBatis使用教程详解<下>
回顾上一篇博文,我们讲了如何使用注解/XML的方式来操作数据库,实际上,一个Mapper接口的实现,这两种方式是可以并存的. 上一篇博文中,我们演示的都是比较简单的SQL语句,没有设计到复杂的逻辑,本篇博文会讲解复杂SQL的实现及一些细节处理.话不多说,让我们开始吧. 一. #{}和${} …...
C++基础 -17-继承中 基类与派生构造和析构调用顺序
首先声明 定义了派生类会同时调用基类和派生的构造函数 定义了派生类会同时调用基类和派生的析构函数 那么顺序如何如下图 构造由上往下顺序执行 析构则完全相反 #include "iostream"using namespace std;class base {public:base(){cout << "base-bui…...
uniapp实现表单弹窗
uni.showModal({title: 删除账户,confirmColor:#3A3A3A,cancelColor:#999999,confirmText:确定,editable:true,//显示content:请输入“delete”删除账户,success: function (res) {console.log(res)if(res.confirm){if(res.contentdelete){console.log(123123123213)uni.setSto…...
Ajax 是什么? 如何创建一个 Ajax?
Ajax(Asynchronous JavaScript and XML)是一种使用客户端JavaScript发送异步HTTP请求到服务器的技术,以便在不重新加载整个页面的情况下更新部分网页内容。 使用Ajax的原因有很多,以下是其中一些: 改善用户体验&…...
【LeetCode】101. 对称二叉树
101. 对称二叉树 难度:简单 题目 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true示例 2: 输入:root [1,2,2,null,3,null,3] 输出&#…...
O-Star|再相识
暑去秋来,岁月如梭,几名"O-Star"们已经入职一段时间,在这期间他们褪去青涩,逐渐适应了公司的工作环境和文化,迈向沉稳~ 为了进一步加深校招生之间的交流与了解,提高校招生的凝聚力和…...
最新PHP熊猫头图片表情斗图生成源码
这是一款能生成熊猫头表情斗图的自适应系统源码,无论是在电脑还是手机上都可以正常使用!这个源码集成了搜狗搜索图片接口,可以轻松地一键搜索数百万张图片,并且还包含了表情制作等功能模块。对于一些新站来说,这是一个…...
子虔科技出席2023WAIC“智能制造融合创新论坛”
7月7日,2023世界人工智能大会(WAIC)闵行会场在大零号湾举办。子虔科技联合创始人周洋作为专家嘉宾受邀参与智能制造融合创新论坛大会。会上探讨了工业和制造业数字化转型的机遇、挑战和对策。其中,周洋提到,工业制造业…...
递归算法学习——二叉树的伪回文路径
1,题目 给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。 请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。 示例…...
Android端极致画质体验之HDR播放
高动态范围HDR视频通过扩大亮度分量的动态范围(从100cd/m2到1000cd/m2),以及采用更宽的色彩空间BT2020,提供极致画质体验。从Android10开始,支持HDR视频播放。 一、HDR技术 HDR技术标准包括:Dolby-Vision、HDR10、HLG、PQ。支持…...
【Java SE】带你在String类世界中遨游!!!
🌹🌹🌹我的主页🌹🌹🌹 🌹🌹🌹【Java SE 专栏】🌹🌹🌹 🌹🌹🌹上一篇文章:带你走近Java的…...
Android: ListView + ArrayAdapter 简单应用
容器与适配器: http://t.csdnimg.cn/ZfAJ7 activity_main.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"h…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
