当前位置: 首页 > 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…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...