android——activity之间数据共享(单例等)

一、使用 Intent 传递数据(适用于简单数据传递,且在 Activity 启动时)

二、使用静态变量(简单但有风险)

  1. 原理
    • 在一个类中定义静态变量,例如一个 Application 类或者一个专门用于存储共享数据的工具类。两个 Activity 都可以访问这个静态变量来共享数据。由于静态变量在类加载时就被初始化并且在整个应用程序的生命周期内存在,只要应用程序不被完全关闭,数据就可以被共享。
  2. 示例代码
    • 创建一个用于存储共享数据的类:
public class DataHolder {public static String sharedData;
}
  • 在一个 Activity 中设置数据:
DataHolder.sharedData = "This is shared data";

  • 在另一个 Activity 中获取数据:
String data = DataHolder.sharedData;
  • 注意事项
    • 这种方式存在风险,因为静态变量会一直占用内存,并且如果应用程序被系统回收后重新启动,静态变量可能会被重新初始化。

三、使用 SharedPreferences(适合存储简单的配置信息或小量数据)

四、使用数据库(如 SQLite,适合大量和持久化的数据共享)

五、使用 ContentProvider(用于跨进程数据共享,也可用于同进程内更规范的数据共享)

六、单例方式

// 定义一个数据类,用于存储复杂的数据
data class AAA(val someData: String, val otherData: Int)// 创建一个单例对象,用于缓存数据
object CacheSingleton {// 使用一个可变的变量来存储数据,这样可以在不同的Activity中更新和访问它var aaaData: AAA? = nullprivate set // 私有化setter,防止外部直接修改// 提供一个公共的方法来设置数据,这样可以控制数据的更新逻辑fun setAAAData(data: AAA) {aaaData = data}// 提供一个公共的方法来获取数据fun getAAAData(): AAA? {return aaaData}
}// 在第一个Activity中设置数据
class FirstActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_first)// 创建一个AAA实例val data = AAA("Hello, World!", 42)// 使用单例对象来设置数据CacheSingleton.setAAAData(data)}
}// 在第二个Activity中获取数据
class SecondActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_second)// 使用单例对象来获取数据val data = CacheSingleton.getAAAData()// 使用获取到的数据data?.let {Log.d("SecondActivity", "Data received: ${it.someData}, ${it.otherData}")}}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

毕设开源 大数据电影数据分析与可视化系统(源码+论文)

文章目录 0 前言1 项目运行效果2 设计概要3 最后 0 前言 🔥这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师…

简单粗暴理解GNN、GCN、GAT

GNN 思想:近朱者赤近墨者黑 GNN的流程: 聚合(把邻居的信息贴到自己身上来,作为它自己特征的补足)更新循环(为什么要多次?看以下例子) GNN能干嘛? 1.结点分类&#xf…

【多线程】多线程(12):多线程环境下使用哈希表

【多线程环境下使用哈希表(重点掌握)】 可以使用类:“ConcurrentHashMap” ★ConcurrentHashMap对比HashMap和Hashtable的优化点 1.优化了锁的粒度【最核心】 //Hashtable的加锁,就是直接给put,get等方法加上synch…

STM32的时钟复位控制单元(RCU/RCC)技术介绍

在嵌入式系统开发中,时钟管理和复位控制是确保微控制器稳定运行的关键因素。时钟复位控制单元(Reset and Clock Control, RCU/RCC) 是 STM32 系列微控制器中的一个重要外设,负责管理系统的时钟源、分频器、外设时钟以及复位功能。…

【网络协议】TCP协议常用机制——延迟应答、捎带应答、面向字节流、异常处理,保姆级详解,建议收藏

💐个人主页:初晴~ 📚相关专栏:计算机网络那些事 前几篇文章,博主带大家梳理了一下TCP协议的几个核心机制,比如保证可靠性的 确认应答、超时重传 机制,和提高传输效率的 滑动窗口及其相关优化机…

构建可以ssh连接的容器镜像

构建可以ssh连接的容器镜像 构建可以通过ssh进行连接容器镜像,实现远程登录容器的目的。 ubuntu ssh容器镜像 你可以使用以下Dockerfile来构建一个可以SSH的容器镜像: FROM ubuntu:20.04MAINTAINER lldhsds# 配置apt国内源 COPY sources.list /etc/a…

云原生开发 - 工具镜像(简约版)

在微服务和云原生环境中,容器化的目标之一是尽可能保持镜像小型化以提高启动速度和减少安全风险。然而,在实际操作中,有时候需要临时引入一些工具来进行调试、监控或问题排查。Kubernetes提供了临时容器(ephemeral containers&…

MyBatis-Plus 的核心插件及其使用介绍

MyBatis-Plus 是基于 MyBatis 的增强工具,为简化 MyBatis 的开发提供了诸多功能扩展。它的目标是减少重复代码、提高开发效率,提供了 CRUD(Create, Read, Update, Delete)操作的简化方法以及多种实用插件。以下是 MyBatis-Plus 的…

QT学习笔记4.5(文件、参数文件)

QT学习笔记4.5(文件、参数文件) 1.保存配置参数 1.使用QSettings保存到注册表,ini文件 2.文件存储:使用 QFile 和其他类将参数保存到文本文件、二进制文件、XMLWENJIAN、JSON 文件等。 文本文件:以简单的键值对格式…

Qt实现Halcon窗口显示当前图片坐标

一、前言 Halcon加载图片的窗口,不仅能放大和缩小图片,还可以按住Ctrl键显示鼠标下的灰度值,这种方式很方便我们分析缺陷的灰度和对比度。 二、实现方式 ① 创建显示坐标和灰度的widget窗口 下图的是widget部件,使用了4个label控…

常说的风险评估,那么「基于风险的测试 (RBT)」如何测试?

基于风险的测试 (RBT) 是一种测试方法,它根据风险的概率和影响确定测试活动的优先级。它涉及在潜在问题发生之前识别它们,并将资源分配给风险最高的测试区域。 在 RBT 中,“风险”是指缺陷的可能性及其对系统运行或业…

DS线性表之单链表的讲解和实现(2)

文章目录 前言一、链表的概念二、链表的分类三、链表的结构四、前置知识准备五、单链表的模拟实现定义头节点初始化单链表销毁单链表打印单链表申请节点头插数据尾插数据头删数据尾删数据查询数据在pos位置之后插入数据删除pos位置之后的数据 总结 前言 本篇的单链表完全来说是…

微信小程序 详情图片预览功能实现详解

详情图片预览功能实现详解 在开发微信小程序时,我们经常需要实现点击商品图片进行全屏预览的功能。这不仅提升了用户体验,还允许用户进行保存图片、发送给朋友等操作。本文将详细介绍如何实现这一功能。 思路分析 当用户在商品详情页点击图片时&#…

架设传奇SF时提示此服务器满员,GEE引擎点开始游戏弹出服务器满员的解决方法

昨天一个朋友在架设GEE的传奇服务端时遇到一个奇怪的问题,就是在服务器外网架设时,建好角色点开始游戏提示此服务器满员,这个问题一般比较少见,而且出现的话一般都是GEE引擎的版本。 他折腾了半天,一直没进游戏&#x…

Apache Linkis + OceanBase:如何提升数据分析效率

计算中间件 Apache Linkis 构建了一个计算中间件层,以实现上层应用程序和底层数据引擎之间的连接、治理和编排。目前,已经支持通过数据源的功能,实现用户通过Linkis 对接并使用 OceanBase数据库。 本文详细阐述了在 Apache Linkis v1.3.2中&a…

VGG16模型实现MNIST图像分类

MNIST图像数据集 MNIST(Modified National Institute of Standards and Technology)是一个经典的机器学习数据集,常用于训练和测试图像处理和机器学习算法,特别是在数字识别领域。该数据集包含了大约 7 万张手写数字图片&#xf…

线性代数在大一计算机课程中的重要性

线性代数在大一计算机课程中的重要性 线性代数是一门研究向量空间、矩阵运算和线性变换的数学学科,在计算机科学中有着广泛的应用。大一的计算机课程中,线性代数的学习为学生们掌握许多计算机领域的关键概念打下了坚实的基础。本文将介绍线性代数的基本…

高考技术——pandas使用

百家讲坛,谈论古今,今天我们不聊别的,我们来聊一聊中国的国宝——大熊猫(bushi) 好好,言归正传,我们今天来讲pandas import pandas as pd 申明无需多言,高考主要考察Series和Data…

Milvus向量数据库管理工具[Attu]实践

Attu是一款专为Milvus向量数据库打造的开源数据库管理工具,提供了便捷的图形化界面,极大地简化了对Milvus数据库的操作与管理流程。阿里云Milvus集成了Attu,以便更加高效地管理数据库、集合(Collection)、索引&#xf…

第四次论文问题知识点及问题

1、NP-hard问题 NP-hard,指所有NP问题都能在多项式时间复杂度内归约到的问题。 2、启发式算法 ‌‌启发式算法(heuristic algorithm)是相对于最优化算法提出的。它是一种基于直观或经验构造的算法,旨在以可接受的花费给出待解决…