当前位置: 首页 > news >正文

《第一行代码: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中&#xff0c;重载了几个生命周期函数&#xff0c;在日志中打印出对应的日志信息&#xff0c;有两个按钮&#xff0c;负责启动另外的Activity&#xff0c;并回到主Activity 由此查看日志&#xff0c;来体会生命周期。 MainActivity.kt 文件如下 pac…...

用java编写一个网络聊天室

网络聊天室 服务器&#xff1a; 1.启动服务器&#xff0c;在服务器端循环监听客户端的连接 try {ServerSocket serverSocketnew ServerSocket(6622);System.out.println("服务器已启动");while(true){//把客户端实例添加到sockets里Socket socketserverSocket.acc…...

Opencv颜色追踪

废话不多说直接上代码&#xff01;&#xff01; # 这是一个示例 Python 脚本。 import cv2 import numpy as npdef track_object():# 打开摄像头外接cap cv2.VideoCapture(0)while True:# 读取摄像头帧# ret&#xff08;Return Value&#xff09;是一个布尔值&#xff0c;表示…...

计算机网络——网络可靠性及网络出口配置

1. 前言&#xff1a; 学习目标&#xff1a; 1.了解链路聚合的作用 2. 了解ACL的工作原理 3. 了解NAT的工作原理和配置 2. 网络可靠性方案 网络可靠性是指网络在面对各种异常情况或故障时&#xff0c;能够维持正常运行和提供服务的能力。这包括防止网络中断、减小数据丢失的可能…...

在虚拟机搭建nignx,和使用本地访问nginx的情况

下载nginx yum install nginx 查看nginx是否安装成功。 nginx -v nginx的配置文件的目录和资源的目录。 先到nginx.conf的目录下&#xff0c;在 /etc/nginx/nginx.conf&#xff0c;编辑它。 vi /etc/nginx/nginx.conf 可以看到默认的html的目录。在 /usr/share/nginx/html 下面…...

Java数据结构之《直接插入排序》问题

一、前言&#xff1a; 这是怀化学院的&#xff1a;Java数据结构中的一道难度中等的一道编程题(此方法为博主自己研究&#xff0c;问题基本解决&#xff0c;若有bug欢迎下方评论提出意见&#xff0c;我会第一时间改进代码&#xff0c;谢谢&#xff01;) 后面其他编程题只要我写完…...

向量场中的几个恒等式

向量场中的几个恒等式 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...

异行星低代码平台--第三方插件对接:钉钉平台对接(一)

异行星低代码平台可以集成钉钉&#xff0c;实现单点登录、消息推送和组织机构同步。 提示 此功能需要企业版授权才能使用。 钉钉集成​ 单点登录 异行星低代码平台集成到钉钉后&#xff0c;只要使用钉钉账户登录钉钉客户端&#xff0c;即可在钉钉中直接使用管理后台&#…...

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&#xff08;Asynchronous JavaScript and XML&#xff09;是一种使用客户端JavaScript发送异步HTTP请求到服务器的技术&#xff0c;以便在不重新加载整个页面的情况下更新部分网页内容。 使用Ajax的原因有很多&#xff0c;以下是其中一些&#xff1a; 改善用户体验&…...

【LeetCode】101. 对称二叉树

101. 对称二叉树 难度&#xff1a;简单 题目 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#…...

O-Star|再相识

暑去秋来&#xff0c;岁月如梭&#xff0c;几名"O-Star"们已经入职一段时间&#xff0c;在这期间他们褪去青涩&#xff0c;逐渐适应了公司的工作环境和文化&#xff0c;迈向沉稳&#xff5e; 为了进一步加深校招生之间的交流与了解&#xff0c;提高校招生的凝聚力和…...

最新PHP熊猫头图片表情斗图生成源码

这是一款能生成熊猫头表情斗图的自适应系统源码&#xff0c;无论是在电脑还是手机上都可以正常使用&#xff01;这个源码集成了搜狗搜索图片接口&#xff0c;可以轻松地一键搜索数百万张图片&#xff0c;并且还包含了表情制作等功能模块。对于一些新站来说&#xff0c;这是一个…...

子虔科技出席2023WAIC“智能制造融合创新论坛”

7月7日&#xff0c;2023世界人工智能大会&#xff08;WAIC&#xff09;闵行会场在大零号湾举办。子虔科技联合创始人周洋作为专家嘉宾受邀参与智能制造融合创新论坛大会。会上探讨了工业和制造业数字化转型的机遇、挑战和对策。其中&#xff0c;周洋提到&#xff0c;工业制造业…...

递归算法学习——二叉树的伪回文路径

1&#xff0c;题目 给你一棵二叉树&#xff0c;每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的&#xff0c;当它满足&#xff1a;路径经过的所有节点值的排列中&#xff0c;存在一个回文序列。 请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。 示例…...

Android端极致画质体验之HDR播放

高动态范围HDR视频通过扩大亮度分量的动态范围(从100cd/m2到1000cd/m2)&#xff0c;以及采用更宽的色彩空间BT2020&#xff0c;提供极致画质体验。从Android10开始&#xff0c;支持HDR视频播放。 一、HDR技术 HDR技术标准包括&#xff1a;Dolby-Vision、HDR10、HLG、PQ。支持…...

【Java SE】带你在String类世界中遨游!!!

&#x1f339;&#x1f339;&#x1f339;我的主页&#x1f339;&#x1f339;&#x1f339; &#x1f339;&#x1f339;&#x1f339;【Java SE 专栏】&#x1f339;&#x1f339;&#x1f339; &#x1f339;&#x1f339;&#x1f339;上一篇文章&#xff1a;带你走近Java的…...

Android: ListView + ArrayAdapter 简单应用

​​容器与适配器&#xff1a;​​​​​ 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…...

CSMS详细学习,CIA网络安全接口协议和CSMS的关系

CSMS详细学习&#xff0c;CIA网络安全接口协议和CSMS的关系 一、CSMS的定义与核心目标 CSMS&#xff08;Cybersecurity Management System&#xff09; 是由 UN R155法规 强制要求建立的一套组织级网络安全管理体系。其本质是通过制度化的流程、策略和资源分配&#xff0c;确保…...

音频算法可视化实战:用Android自定义View绘制专业级EQ/DRC曲线图

音频算法可视化实战&#xff1a;用Android自定义View绘制专业级EQ/DRC曲线图 在音频处理领域&#xff0c;EQ&#xff08;均衡器&#xff09;和DRC&#xff08;动态范围控制&#xff09;是两大核心算法。对于已经掌握这些算法原理的开发者来说&#xff0c;如何将它们直观地呈现给…...

Aitoon arnold渲染器 卡通材质

Edge边&#xff0c;silhouette剪影只有两个跟普通材质不同&#xff0c;其他都跟普通材质一样Stylized highlight风格化高光&#xff1b;specular高光&#xff1b;rim lighting轮廓光transmission透射sheen光泽emission自发光【实例 卡通材质渲染边】打开edge requires contour …...

从Revit/BIM到Cesium:CesiumLab 4.0.7插件全流程打通,属性信息一个不丢

从Revit到Cesium的无损数据迁移&#xff1a;CesiumLab 4.0.7全流程深度解析 1. BIM与三维GIS融合的技术演进 在建筑信息模型&#xff08;BIM&#xff09;与地理信息系统&#xff08;GIS&#xff09;的交叉领域&#xff0c;数据互操作性一直是行业痛点。传统工作流中&#xff0c…...

基于Vue的青年志愿者乡村服务管理系统[vue]-计算机毕业设计源码+LW文档

摘要&#xff1a;随着乡村振兴战略的深入实施&#xff0c;青年志愿者在乡村服务中的作用日益凸显。为了提高青年志愿者光明村乡村服务的管理效率和质量&#xff0c;本文设计并实现了一个基于Vue的青年志愿者乡村服务管理系统。本文详细阐述了系统的开发背景、相关技术、需求分析…...

实例】四相机测量项目源码使用海康SDK及C#+halcon实现的通俗易懂教程:连接相机、模板匹...

四相机测量项目源码&#xff0c;海康相机SDK&#xff0c;C#halcon&#xff0c;写得比较通俗易懂&#xff0c;四相机四种测量模式&#xff0c;某工厂产线曾使用的项目。 主要功能有连接海康相机采图&#xff0c;模板匹配&#xff0c;圆形拟合&#xff0c;直线拟合&#xff0c;像…...

2026普通人如何逆袭进大模型圈?吴师兄亲授4大方向+3坑避坑+真实学习路线

站在现在回头看&#xff0c;会发现一个有趣的现象&#xff1a; AI 大潮滚滚 2 年&#xff0c;流量的风向能变&#xff0c;岗位的 JD 能变&#xff0c;各家模型能天天更新&#xff0c;但真正能落地的东西&#xff0c;并没有变。 这 2 年里&#xff0c;我带过很多转行同学&#…...

人工改写和降AI工具哪个更划算?花了一周测完给你结论

这个问题我认真测过&#xff1a;同一篇论文&#xff0c;用人工改写和用降AI工具处理&#xff0c;分别花了多少时间、多少钱、最终效果如何。结论有点出乎意料。 结论&#xff1a;降AI工具性价比远高于人工改写&#xff0c;唯一例外是对语言质量有极高要求的顶刊投稿。推荐的工…...

革新性智能漫画翻译工具:解决本地化效率痛点,释放创作价值

革新性智能漫画翻译工具&#xff1a;解决本地化效率痛点&#xff0c;释放创作价值 【免费下载链接】BallonsTranslator 深度学习辅助漫画翻译工具, 支持一键机翻和简单的图像/文本编辑 | Yet another computer-aided comic/manga translation tool powered by deeplearning 项…...

INS与GPS组合导航EKF算法代码功能说明

三维的组合导航。 ins和卫星的组合导航算法&#xff0c;基于卡尔曼滤波和eskf滤波的都有。 MATLAB源码&#xff0c;有kf和eskf的对比&#xff0c;也有单独的误差&#xff0c;或者输入滤波之后的位移速度等导航参数。 这段程序主要是一个卡尔曼滤波器&#xff0c;用于估计运动物…...