Android 开发避坑经验第四篇:正确处理Activity和Fragment的状态保存与恢复

news/2024/9/17 3:42:25/ 标签: android

在 Android 开发中,​​Activity​​ 和 ​​Fragment​​ 的状态保存与恢复是一个常见的坑点。如果处理不当,可能会导致应用在屏幕旋转、后台恢复等场景下出现数据丢失、UI 状态不一致等问题。本篇文章将详细探讨如何正确保存和恢复 ​​Activity​​ 与 ​​Fragment​​ 的状态,并提供最佳实践的代码示例。

1. 坑点:Activity 和 Fragment 的重建导致数据丢失

当用户旋转屏幕或者系统回收内存时,​​Activity​​ 或 ​​Fragment​​ 可能会被销毁并重建。如果没有妥善处理状态保存,这将导致用户输入或显示的数据丢失,影响用户体验。

避坑建议:
  • 使用 ​​onSaveInstanceState()​​ 方法来保存 ​​Activity​​ 或 ​​Fragment​​ 的状态。
  • 避免通过构造函数传递数据,改用 ​​Bundle​​ 或 ​​ViewModel​​ 来保存和恢复状态。
  • 对于重要的数据(如用户输入、临时状态等),应保存到 ​​Bundle​​ 中。
示例代码&#x

http://www.ppmy.cn/news/1522346.html

相关文章

数学基础 -- 线性代数之LU分解

LU分解 LU分解(LU Decomposition)是线性代数中非常重要的一种矩阵分解方法。它将一个方阵分解为一个下三角矩阵(L矩阵)和一个上三角矩阵(U矩阵)的乘积。在数值线性代数中,LU分解广泛用于求解线…

培训第九周(部署k8s基础环境)

一、前期系统环境准备 1、关闭防火墙与selinux [rootk8s-master ~]# systemctl stop firewalld[rootk8s-master ~]# systemctl disable firewalldRemoved symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.Removed symlink /etc/systemd/system/dbus-o…

c++ 指针的用法详解

C中的指针是一个非常重要的概念,指针变量用于存储其他变量的内存地址。通过指针,程序可以直接访问和操作内存,提高了程序的灵活性和效率。以下是关于C指针用法的详解。 1. 指针的基本概念 定义:指针是一个变量,其值为…

思科网络地址转换5

#网络安全技术实现# #任务五利用动态NAPT实现局域网访问Internet5# #1配置计算机的IP 地址、子网掩码和网关 #2配置路由器A的主机名称及其接口IP地址 Router>enable Router#conf t Router(config)#hostname Router-A Router-A(config)#int f0/0 Router-A(config-if)#i…

Notepad++ 下载安装教程

目录 1.下教程 2.安装教程 1.下教程 Downloads | Notepad (notepad-plus-plus.org) 进入下载地址后选择最新版点击连接 点击链接后,向下滑动,下载适合自己电脑版本的安装包 这里大家没有梯子可能打不开页面,可以直接从本文开头下载。 2.安…

Spring Boot之数据访问集成入门

Spring Boot中的数据访问和集成支持功能是其核心功能之一,通过提供大量的自动配置和依赖管理,极大地简化了数据访问层的开发。Spring Boot支持多种数据库,包括关系型数据库(如MySQL、Oracle等)和非关系型数据库&#x…

ffmpeg 视频编码及基本知识

理论 H264编码原理(简略) 1. 视频为什么需要进行编码压缩 降低视频数据大小,方便存储和传输 2. 为什么压缩的原始数据采用YUV格式 彩色图像的格式是 RGB 的,但RGB 三个颜色是有相关性的。 采用YUV格式,利用人对图像的…

redis之zset命令学习

redis之zset命令学习 zset是一个不包含重复元素的字符串集合,且每个元素都会关联一个 double 类型的分数(score)。这使得有序集合既可以通过成员(member)来查询,也可以通过分数(score&#xff…

ctfshow-php特性(web123-web150plus)

​web123 <?php error_reporting(0); highlight_file(__FILE__); include("flag.php"); $a$_SERVER[argv]; $c$_POST[fun]; if(isset($_POST[CTF_SHOW])&&isset($_POST[CTF_SHOW.COM])&&!isset($_GET[fl0g])){if(!preg_match("/\\\\|\/|\~|…

彻底解决win10系统Tomcat10控制台输出中文乱码

彻底解决Tomcat10控制台输出中文乱码 首先乱码问题的原因通俗的讲就是读的编码格式和写的解码格式不一致&#xff0c;比如最常见的两种中文编码UTF-8和GBK,UTF-8一个汉字占三个字节&#xff0c;GBK一个汉字占两个字节&#xff0c;所以当编码与解码格式不一致时&#xff0c;输出…

封装触底加载组件

&#xff08;1&#xff09;首先创建一个文件名为&#xff1a;InfiniteScroll.vue <template><div ref"scrollContainer" class"infinite-scroll-container"><slot></slot><div v-if"loading" class"loading-sp…

如何完成本科毕业论文设计

完成本科毕业论文设计是一个系统性的工程&#xff0c;需要经过多个阶段的规划、执行和总结。以下是一个详细的步骤指南&#xff0c;帮助你顺利完成本科毕业论文设计。 ### 1. 选题与开题 - **选题**&#xff1a;选择一个有研究价值且你感兴趣的题目。与导师讨论&#xff0c;确…

CSS瀑布流实现

文章目录 前言前置知识 React 中实现代码实现 Vue 中实现代码实现 前言 瀑布流是一种CSS布局技术&#xff0c;它允许不同高度的元素在页面上以美观的方式排列&#xff0c;同时保持行与列间的间距一致。 前置知识 使用 multi-column 实现多列布局 column-count: 设置布局显示…

MongoDB 的适用场景

MongoDB 的适用场景 MongoDB 是一种基于文档存储的 NoSQL 数据库&#xff0c;与传统的关系型数据库不同&#xff0c;它使用 JSON 类似的二进制文档格式&#xff08;BSON&#xff09;来存储数据&#xff0c;并且具备灵活的文档模型、强大的查询能力和水平扩展性。这些特性使得 …

音乐项目

获取验证码&#xff1a; 将获取验证码的消息发送给前端&#xff0c;再由后端发给前端 function getverification_code(event) {event.preventDefault();console.log(点击获取验证码按钮);// 获取输入元素的值const emailInput document.getElementById(email);const emailVal…

Leetcode JAVA刷刷站(112)路径总和

一、题目概述 二、思路方向 为了解决这个问题&#xff0c;我们可以使用深度优先搜索&#xff08;DFS&#xff09;算法来遍历二叉树&#xff0c;并检查从根节点到叶子节点的路径和是否等于目标和。 三、代码实现 class TreeNode { int val; TreeNode left; TreeNode rig…

架构全景视图

文章目录 一、战略规划二、业务架构Business Architecture2.1业务架构定义2.2 业务架构组成2.3 TOGAF2.3.1 Archimate建模&#xff08;重要&#xff09; 三、数据架构Data Architecture3.1 数据架构定义3.2 数据架构组成 四、应用架构Application Architecture4.1 应用架构定义…

相亲交友系统商业开发

在快节奏的现代生活中&#xff0c;寻找真爱成为了许多人的渴望。相亲交友系统&#xff0c;作为连接心灵的桥梁&#xff0c;正逐渐成为人们寻找伴侣的首选方式。我们的团队h17711347205致力于开发一款创新的相亲交友系统&#xff0c;旨在通过智能化的匹配算法&#xff0c;为用户…

The Prompt Report 2

The Prompt Report 提示工程调查报告《The Prompt Report: A Systematic Survey of Prompting Techniques》 主要内容 Core Prompting Techniques Text based Techniques&#xff1a;PRISMA流程&#xff0c;58中基于文本的提示技术&#xff0c;提示语术语分类表&#xff1b;M…

java opencv no opencv_java490 in java.library.path

java使用opencv处理图片&#xff0c;idea运行程序&#xff0c;报错异常信息&#xff1a; Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java490 in java.library.path: /Users/carter/Library/Java/Extensions:/Library/Java/Extensions:…