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

android Fragment 生命周期 方法调用顺序

文章目录

    • Intro
    • log 及结论
    • 代码

Intro

界面设计:点击左侧按钮,会将右侧 青色的RightFragment 替换成 黄色的AnotherRightFragment,而这两个 Fragment 的生命周期方法都会打印日志。
所以只要看执行结果中的日志,就可以知道 Fragment 的不同生命周期方法的执行顺序。
在这里插入图片描述
点击按钮后,右侧的Fragment被替换:
在这里插入图片描述

log 及结论

2024-03-24 20:40:26.903 FragmentUsageTestActivi  W  Fragment的生命周期:=====》切换Fragment
2024-03-24 20:40:26.916 RightFragment            D  Fragment的生命周期: RightFragment onAttach: 
2024-03-24 20:40:26.916 RightFragment            D  Fragment的生命周期: RightFragment onCreate: 
2024-03-24 20:40:26.917 RightFragment            D  Fragment的生命周期: RightFragment onActivityCreated: 
2024-03-24 20:40:26.919 RightFragment            D  Fragment的生命周期: RightFragment onStart: 
2024-03-24 20:40:26.921 RightFragment            D  Fragment的生命周期: RightFragment onResume: 
2024-03-24 20:40:38.070 FragmentUsageTestActivi  W  Fragment的生命周期:=====》切换Fragment
2024-03-24 20:40:38.081 RightFragment            D  Fragment的生命周期: RightFragment onPause: 
2024-03-24 20:40:38.081 RightFragment            D  Fragment的生命周期: RightFragment onStop: 
2024-03-24 20:40:38.082 AnotherRightFragment     D  Fragment的生命周期: AnotherRightFragment onAttach: 
2024-03-24 20:40:38.082 AnotherRightFragment     D  Fragment的生命周期: AnotherRightFragment onCreate: 
2024-03-24 20:40:38.087 AnotherRightFragment     D  Fragment的生命周期: AnotherRightFragment onActivityCreated: 
2024-03-24 20:40:38.088 AnotherRightFragment     D  Fragment的生命周期: AnotherRightFragment onStart: 
2024-03-24 20:40:38.090 RightFragment            D  Fragment的生命周期: RightFragment onDestroyView: 
2024-03-24 20:40:38.091 AnotherRightFragment     D  Fragment的生命周期: AnotherRightFragment onResume: 
2024-03-24 20:40:42.935 FragmentUsageTestActivi  W  Fragment的生命周期:=====》点击了【返回】按钮 (onBackPressed)
2024-03-24 20:40:42.936 AnotherRightFragment     D  Fragment的生命周期: AnotherRightFragment onPause: 
2024-03-24 20:40:42.937 AnotherRightFragment     D  Fragment的生命周期: AnotherRightFragment onStop: 
2024-03-24 20:40:42.939 RightFragment            D  Fragment的生命周期: RightFragment onActivityCreated: 
2024-03-24 20:40:42.939 RightFragment            D  Fragment的生命周期: RightFragment onStart: 
2024-03-24 20:40:42.940 AnotherRightFragment     D  Fragment的生命周期: AnotherRightFragment onDestroyView: 
2024-03-24 20:40:42.940 AnotherRightFragment     D  Fragment的生命周期: AnotherRightFragment onDestroy: 
2024-03-24 20:40:42.940 AnotherRightFragment     D  Fragment的生命周期: AnotherRightFragment onDetach: 
2024-03-24 20:40:42.940 RightFragment            D  Fragment的生命周期: RightFragment onResume: 
2024-03-24 20:40:44.765 FragmentUsageTestActivi  W  Fragment的生命周期:=====》点击了【返回】按钮 (onBackPressed)
2024-03-24 20:40:44.766 RightFragment            D  Fragment的生命周期: RightFragment onPause: 
2024-03-24 20:40:44.767 RightFragment            D  Fragment的生命周期: RightFragment onStop: 
2024-03-24 20:40:44.768 RightFragment            D  Fragment的生命周期: RightFragment onDestroyView: 
2024-03-24 20:40:44.769 RightFragment            D  Fragment的生命周期: RightFragment onDestroy: 
2024-03-24 20:40:44.769 RightFragment            D  Fragment的生命周期: RightFragment onDetach: 
2024-03-24 20:40:48.307 FragmentUsageTestActivi  W  Fragment的生命周期:=====》点击了【返回】按钮 (onBackPressed)

在这里插入图片描述

结论与 《第一行代码》中所述一致:
在这里插入图片描述

代码

可以查看以下三个提交点(改动一样, gitee网速最快,不过三个网站界面有不同,看你习惯看哪个):
gitee: https://gitee.com/wuyujin1997/android-demo/commit/0d75711e244b7c59ed009326b8174bedcb4caff8
github: https://github.com/wuyujin1997/AndroidDemo/commit/0d75711e244b7c59ed009326b8174bedcb4caff8
bitbucket: https://bitbucket.org/wuyujin1997/androiddemo/commits/0d75711e244b7c59ed009326b8174bedcb4caff8

主要的生命周期方法日志类如下(其他的就不贴了,见上 git commit link):

import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;public class BaseFragmentForLifecycleLog extends Fragment {private String TAG;public BaseFragmentForLifecycleLog() {TAG = this.getClass().getSimpleName();}@Overridepublic void onAttach(@NonNull Context context) {super.onAttach(context);Log.d(TAG, "Fragment的生命周期: " + TAG + " onAttach: ");}@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.d(TAG, "Fragment的生命周期: " + TAG + " onCreate: ");}@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {Log.d(TAG, "Fragment的生命周期: " + TAG + " onCreateView: ");return super.onCreateView(inflater, container, savedInstanceState);}@Overridepublic void onActivityCreated(@Nullable Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);Log.d(TAG, "Fragment的生命周期: " + TAG + " onActivityCreated: ");}@Overridepublic void onStart() {super.onStart();Log.d(TAG, "Fragment的生命周期: " + TAG + " onStart: ");}@Overridepublic void onResume() {super.onResume();Log.d(TAG, "Fragment的生命周期: " + TAG + " onResume: ");}@Overridepublic void onPause() {super.onPause();Log.d(TAG, "Fragment的生命周期: " + TAG + " onPause: ");}@Overridepublic void onStop() {super.onStop();Log.d(TAG, "Fragment的生命周期: " + TAG + " onStop: ");}@Overridepublic void onDestroyView() {super.onDestroyView();Log.d(TAG, "Fragment的生命周期: " + TAG + " onDestroyView: ");}@Overridepublic void onDestroy() {super.onDestroy();Log.d(TAG, "Fragment的生命周期: " + TAG + " onDestroy: ");}@Overridepublic void onDetach() {super.onDetach();Log.d(TAG, "Fragment的生命周期: " + TAG + " onDetach: ");}}

相关文章:

android Fragment 生命周期 方法调用顺序

文章目录 Introlog 及结论代码 Intro 界面设计:点击左侧按钮,会将右侧 青色的RightFragment 替换成 黄色的AnotherRightFragment,而这两个 Fragment 的生命周期方法都会打印日志。 所以只要看执行结果中的日志,就可以知道 Fragme…...

python写爬虫爬取京东商品信息

工具库 爬虫有两种方案: 第一种方式是使用request模拟请求,并使用bs4解析respond得到数据。第二种是使用selenium和无头浏览器,selenium自动化操作无头浏览器,由无头浏览器实现请求,对得到的数据进行解析。 第一种方…...

使用Linux别名简化命令输入

Linux定义命令别名,解决经常重复输入长命令 在Linux环境下工作时,我们经常需要输入长长的命令,这不仅耗时而且容易出错。Linux提供了一种名为“别名(alias)”的功能,可以让我们为这些长命令定义简短的名称…...

34.网络游戏逆向分析与漏洞攻防-游戏网络通信数据解析-登录数据包的监视与模拟

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 内容参考于:易道云信息技术研究院VIP课 上一个内容:33.游戏登录数据…...

rust - 对文件夹进行zip压缩加密

本文提供了一种对文件夹进行zip压缩并加密的方法。 添加依赖 cargo add anyhow cargo add walkdir cargo add zip cargo add zip-extensions计算文件夹的大小 目的是对需要压缩的文件夹的大小做一个限制。当然如果资源足够的话,可以去掉此限制。 let mut total_s…...

ETL数据倾斜与资源优化

1.数据倾斜实例 数据倾斜在MapReduce编程模型中比较常见,由于key值分布不均,大量的相同key被存储分配到一个分区里,出现只有少量的机器在计算,其他机器等待的情况。主要分为JOIN数据倾斜和GROUP BY数据倾斜。 1.1GROUP BY数据倾…...

Python的asyncio:异步编程的利器

在Python中,asyncio模块为开发者提供了强大的异步编程支持,使得编写高效且并发的代码变得更加容易。本文将深入探讨asyncio的核心概念、工作原理以及如何快速入门,通过文字与代码结合,带您领略异步编程的魅力。 1. 协程与事件循环…...

nodejs+vue高校奖助学金系统python-flask-django-php

高校奖助学金系统的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品,体验高科技时代带给人们的方便,同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓,iOS相比较起来,…...

已解决redis.clients.jedis.exceptions.JedisMovedDataException异常的正确解决方法,亲测有效!!!

已解决redis.clients.jedis.exceptions.JedisMovedDataException异常的正确解决方法,亲测有效!!! 目录 问题分析 报错原因 解决思路 解决方法 使用JedisCluster自动处理MOVED错误 手动更新客户端缓存 总结 博主v&#xff…...

政安晨:【深度学习实践】【使用 TensorFlow 和 Keras 为结构化数据构建和训练神经网络】(五)—— Dropout和批归一化

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! Dropout和批归一化是深度学习领域中常用的正则化技术…...

nodejs+vue高校会议室预订管理系统python-flask-django-php

伴随着我国社会的发展,人民生活质量日益提高。于是对系统进行规范而严格是十分有必要的,所以许许多多的信息管理系统应运而生。此时单靠人力应对这些事务就显得有些力不从心了。所以本论文将设计一套高校会议室预订管理系统,帮助学校进行会议…...

文件夹读取不到文件:深度解析与高效恢复策略

一、遭遇文件夹读取难题:文件离奇失踪 在日常使用电脑或移动设备的过程中,我们有时会遇到一个令人头疼的问题:原本存储着重要数据的文件夹突然变得“空空如也”,其中的文件仿佛凭空消失一般,无法正常读取。这种文件夹…...

python—接口编写部分

最近准备整理一下之前学过的前端小程序知识笔记,形成合集。顺便准备学一学接口部分,希望自己能成为一个全栈嘿嘿。建议关注收藏,持续更新技术文档。 目录 前端知识技能树http请求浏览器缓存 后端知识技能树python_api:flaskflask…...

手机IP地址如何更换

手机IP地址的修改方法可以通过以下几种方式实现: 1. 手动更改IP地址:打开手机设置,进入网络设置页面,找到IP地址更改选项。在此页面输入新的IP地址和子网掩码,并启用DHCP服务器。请注意,并非所有手机都支持…...

【R包开发:包的组件】 第4章 包的元数据

DESCRIPTION(描述文件) 的作用是存储包中重要的元数据。当第一次开发包时, 你会 使用这个文件记录包运行时所需要的包。然而,随着时间的流逝,当开始与他人分享包 时,元数据文件变得越来越重要,因为它指定了谁可以使用它…...

Office办公软件之word的使用(一)

前几天调整公司招标文件的格式,中途遇到一些问题,感觉自己还不是太熟悉操作,通过查阅资料,知道了正确的操作,就想着给记下来。如果再次遇到,也能很快地找到解决办法。 一、怎么把标题前的黑点去掉 解决办法…...

OpenGL+QT实现矢量和影像的叠加绘制

一、QT下OpenGL框架的初始化 OpenGL的介绍我在这里就没有必要介绍了,那OpenGL和QT的结合在这里就有必要先介绍一下,也就是怎么使用QT下的OpenGL框架。要想使用QT下的OpenGL框架,就必须要子类化QGLWidget,然后实现。 void initia…...

vue基础——java程序员版(vuex)

​ vuex可以定义共享数据。 1、主要结构 src/store/index.js 是使用vuex的核心js文件。 定义数据:state 修改数据(同步):mutations 修改数据(异步):action调用>mutations 下面定义了一个公共数据msg ,mutations方法setName…...

ubuntu20.04安装 ffmpeg 开发环境

参考:参考1 一些相关软件包,已打包整理好,如下 源码包 1、安装步骤 创建安装目录 sudo mkdir -p /usr/local/ffmpeg/lib 解压源码 tar -jxf ffmpeg-4.3.2.tar.bz2 到指定ffmpeg目录进行配置 cd ffmpeg-4.3.2/ 配置:会报错很多…...

微软开源Garnet高性能缓存服务安装

Garnet介绍 Garnet是一款微软研究院基于C#开发而开源的高性能缓存服务,支持Windows、Linux多平台部署,Garnet兼容Redis服务API,在性能和使用架构上较Redis有很大提升(官方说法),并提供与Redis一样的命令操…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码&#xff1a;HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...