Activity 生命周期

在Android开发中,Activity是应用程序的主要组件之一,它代表应用程序中的一个屏幕或界面。当用户与应用程序进行交互时,Activity会根据用户的操作而启动、暂停、恢复或停止等,这些状态变化被称为Activity的生命周期。

Activity的生命周期包括以下几个状态:

1. Created:Activity对象被创建,但尚未可见。在这个状态下,Activity还没有与用户进行交互,不能响应用户的操作。

2. Started:Activity已经可见,但尚未获得用户的焦点。在这个状态下,Activity已经显示在屏幕上,但用户还不能与其进行交互。

3. Resumed:Activity已经显示在屏幕上,并且获得了用户的焦点。在这个状态下,Activity已经准备好接受用户的输入,并可以响应用户的操作。

4. Paused:Activity失去了用户的焦点,但仍然可见。在这个状态下,Activity仍然在屏幕上显示,但用户正在与其他组件进行交互。

5. Stopped:Activity被完全遮盖或停止,不再可见。在这个状态下,Activity已经不再显示在屏幕上,可能被其他Activity覆盖或被系统停止。

6. Destroyed:Activity被销毁,释放了系统资源。在这个状态下,Activity对象已经被销毁,无法再被使用。

除了这些状态之外,Activity还有一些回调方法,可以在状态变化时进行处理,这些方法包括:

- onCreate():Activity对象被创建时调用。

- onStart():Activity变为可见状态时调用。

- onResume():Activity获得用户焦点时调用。

- onPause():Activity失去用户焦点时调用。

- onStop():Activity不再可见时调用。

- onDestroy():Activity被销毁时调用。

通过这些回调方法,开发者可以在Activity的不同状态下进行相应的操作,以提供更好的用户体验。

这个图片我相信大家在好多地方都应该见过。

如果想深刻理解Activity之间相互切换时的周期还是得在这几个方法中研究,我的建议是可以在每个方法中打印日志,然后操作客户端进行观察状态。

  1. onCreate():Activity对象被创建时调用。在这个方法中,开发者可以进行一些初始化操作,例如设置布局、绑定控件、初始化数据等。此外,还可以通过调用setContentView()方法来设置Activity的布局。

  2. onStart():Activity变为可见状态时调用。在这个方法中,开发者可以执行一些需要在Activity可见时才能执行的操作,例如开始动画、启动服务等。此时,Activity虽然已经可见,但并没有获得用户焦点。

  3. onResume():Activity获得用户焦点时调用。在这个方法中,开发者可以执行一些需要在Activity获得用户焦点时才能执行的操作,例如启动定时器、开始播放音乐等。此时,Activity已经准备好接受用户的输入。

  4. onPause():Activity失去用户焦点时调用。在这个方法中,开发者可以执行一些需要在Activity失去用户焦点时才能执行的操作,例如停止动画、暂停音乐播放等。此时,Activity仍然可见,但已经不能接受用户的输入。

  5. onStop():Activity不再可见时调用。在这个方法中,开发者可以执行一些需要在Activity不再可见时才能执行的操作,例如释放资源、停止服务等。此时,Activity已经不再显示在屏幕上,可能被其他Activity覆盖或被系统停止。

  6. onDestroy():Activity被销毁时调用。在这个方法中,开发者可以执行一些需要在Activity被销毁时才能执行的操作,例如释放资源、取消注册广播接收器等。此时,Activity对象已经被销毁,无法再被使用。

说通俗点,其中1和7,相对应,2和5相对应,3和4相对应,2,5所表示的阶段是存在,但是在后台看不见,而3,4所表示的是在前台正在显示。

当用户开始离开 Activity 时,系统会调用方法来销毁该 Activity。在某些情况下,此销毁只是部分销毁;Activity 仍然驻留在内存中(例如当用户切换至另一应用时),并且仍然可以返回到前台。如果用户返回到该 Activity,Activity 会从用户离开时的位置继续运行。

系统终止给定进程及其中 Activity 的可能性取决于当时 Activity 的状态。

根据 Activity 的复杂程度,您可能不需要实现所有生命周期方法。但是,请务必了解每个方法,并实现能够确保应用按用户预期方式运行的方法,这非常重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/48225.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot创建并配置环境(二) - 配置基础环境

文章目录 一、介绍二、配置系统属性和环境变量三、配置自定义属性命令行参数四、作为应用配置信息 一、介绍 在上一篇文章:springboot创建并配置环境(一) - 创建环境中我们探讨了springboot是如何根据当前应用程序类型去创建对应的环境实例的。接下来探讨如何去配置…

亚马逊云科技联合霞光社发布《2013~2023中国企业全球化发展报告》

中国企业正处于全球聚光灯下。当企业全球化成为时代发展下的必然趋势,出海也从“可选项”变为“必选项”。中国急速扩大的经济规模,不断升级的研发和制造能力,都在推动中国企业不断拓宽在全球各行业的疆域。 过去十年,是中国企业…

管理后台低代码PaaS平台源码:点击鼠标,就能编程

低代码平台源码10大核心功能:1建模引擎 、2 移动引擎 、3,流程引擎 5.报表引擎、6安全引擎、 7 API引擎 、8.应用集成引擎、 9.代码引擎、 10.公式引擎。 一、低代码开发特色 1.低代码开发:管理后台提供了一系列易于使用的低代码开发工具,使企业可以快速…

TSINGSEE青犀视频安防监控视频平台EasyCVR新增密码复杂度提示

智能视频监控平台TSINGSEE青犀视频EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发RTSP、RTM…

getInputStream has already been called for this request 问题记录

问题背景 HttpServletRequest.getReader() HttpServletRequest.getInputStream() 不能在过滤器中读取一次二进制流(字符流),又在另外一个Servlet中读取一次,即一个InputSteam(BufferedReader)对象在被读取完成后,将无…

安全第一天

1. 编码 1.1 ASCLL编码 ASCII 是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。 1.2 URL编码 URL:(统一资源定位器、定位地址,俗称网页…

Ubuntu 曝Linux漏洞,近 40% 用户受影响

Bleeping Computer 网站披露,Wiz 研究人员 s.Tzadik 和 s.Tamari 发现 Ubuntu 内核中存在两个 Linux 漏洞 CVE-2023-32629 和 CVE-2023-2640,没有特权的本地用户可能利用其在设备上获得更高权限,影响大约 40% 的 Ubuntu 用户。 Ubuntu 是目前…

KingFunsion工程开发规范——关系库使用规范

KingFunsion工程开发规范——关系库使用规范 2023-07-07 20:10雷工笔记 哈喽,大家好,我是雷工。 今天学习KingFunsion工程开发规范之关系库使用规范。 第一章 统一规范 1.1.表字符集默认使用utf8; 1.2.禁止在数据库中存储大文件&#xff0…

MySQL数据库分库分表备份(shell脚本)

创建目录 mkdir /server/scripts 一、使用脚本实现分库备份 1、创建脚本并编写 [rootlocalhost scripts]# vim bak_db_v1.sh #!/bin/bash ######################################### # File Name:bak_db_v1.sh # Version: V1.0 # Author:Shen QL # Email:17702390000163.co…

上门居家养老小程序社区养老小程序开发方案详解

居家养老管理社区养老小程序有哪些功能呢? 1.选择养老服务类型 医疗护理,家政服务预约,上门助浴、上门做饭,上门助餐,生活照护,康复理疗、精神慰藉、委托代办等。各项服务的详情介绍。 2.选择预约时间 选择…

【电网异物检测硕士论文摘抄记录】电力巡检图像中基于深度学习的异物检测方法研究

根据国家电力行业发展报告统计,截止到 2018 年,全国电网 35 千伏及以上的输电线路回路长度达到 189 万千米,220 千伏及以上输电线路回路长度达73 万千米。截止到 2015年,根据国家电网公司的统计 330 千伏及以上输电线路故障跳闸总…

F12开发者工具的简单应用

目录 elements 元素 1、元素的定位和修改 2、UI自动化应用 console 控制台 sources 源代码 network 网络 1、定位问题 2、接口测试 3、弱网测试 performance 性能 memory 存储 application 应用 recorder 记录器 界面展示如下(设置中可以切换中英文&am…

Stable-Diffusion-Webui部署SDXL0.9报错参数shape不匹配解决

问题 已经在model/stable-diffusion文件夹下放进去了sdxl0.9的safetensor文件,但是在切换model的时候,会报错model的shape不一致。 解决方法 git pullupdate一些web-ui项目就可以,因为当前项目太老了,没有使用最新的版本。

android 如何分析应用的内存(十二)——HWASan

android 如何分析应用的内存(十二) 上一篇介绍了ASan,这次介绍ASan的加强版HWASan HWASan的使用 从NDK r21和Android 10 开始,Android支持HWAsan。HWAsan仅仅支持arm64架构的设备。 系统级准备 HWASan需要系统的支持&#xf…

【Terraform学习】TerraformCloud入门介绍(快速入门)

TerraformCloud入门介绍 什么是 TerraformCloud? Terraform Cloud是Hashicorp Terraform的SaaS版本。 免费版功能 免费版功能包括版本控制集成、远程计划和实施远程计划和实施、通知及webhook、全http API驱动、状态管理、模拟计划、私有化模块注册器以及全HTTP界…

9.NIO非阻塞式网络通信入门

highlight: arduino-light Selector 示意图和特点说明 一个 I/O 线程可以并发处理 N 个客户端连接和读写操作,这从根本上解决了传统同步阻塞 I/O 一连接一线程模型。架构的性能、弹性伸缩能力和可靠性都得到了极大的提升。 服务端流程 1、当客户端连接服务端时&…

PHP-Mysql图书管理系统--【白嫖项目】

强撸项目系列总目录在000集 PHP要怎么学–【思维导图知识范围】 文章目录 本系列校训本项目使用技术 首页phpStudy 设置导数据库后台的管理界面数据库表结构项目目录如图:代码部分:主页的head 配套资源作业: 本系列校训 用免费公开视频&am…

FPGA+EMMC 8通道存储小板

FPGA 采用XILINX公司A7100作为主芯片 AD采用AD7606及一款陀螺仪传感器,可以实时存储到EMMC,系统分为采集模式及回放模式 通过232接口对工作模式进行配置,采样率可以动态配置 回放采用W5100S通过TCP协议进行回放数据

【技术积累】Vue.js中的核心知识

Vue的生命周期 Vue中的生命周期是指组件从创建到销毁的整个过程中,会触发一系列的钩子函数 Vue2中的生命周期 Vue2中的生命周期钩子函数是在组件的不同阶段执行的特定函数。这些钩子函数允许开发者在组件的不同生命周期阶段执行自定义的逻辑。 Vue2中的生命周期钩…

Git基本操作

Git使用 1.命令行操作 1.1 本地库操作 1.1.1 本地库初始化 命令: git init 效果: 注意:.git目录中存放的是本地库相关的子目录和文件,不能删除和修改。 1.1.2 设置签名 作用:区分不同的开发人员身份 格式&…