SharedPreferences 存储对象

sp(SharedPreferences)存储对象 其实主要是利用对象输出流(ObjectOutputStream)将对象转换为二进制数据,然后将二进制数据转换为字符串,再利用SP存储字符串即可。 核心代码: /** * 保存对象 * 针对复杂类型存储<对象> * 注意:要保存的对象必须序列化 * @param key * @param object *...... 阅读详情

我们知道SharedPreferences只能存取String和简单类型的数据如int,boolean等,如果想用SharedPreferences存储复杂类型的数据(比如图片,自定义的对象等),就需要对这些数据编解码。通常会将复杂类型的数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在 XML文件中。代码如下:

public class SharedData {

	private Context context;

	private SharedPreferences shared;

	public SharedData(Context context) {
		this.context = context;
		shared = context.getSharedPreferences("device_data",
				Context.MODE_PRIVATE);
	}

	public void saveDeviceData(Device device) {
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		try {   //Device为自定义类
			// 创建对象输出流,并封装字节流
			ObjectOutputStream oos = new ObjectOutputStream(baos);
			// 将对象写入字节流
			oos.writeObject(device);
			// 将字节流编码成base64的字符串
			String oAuth_Base64 = new String(Base64.encodeBase64(baos
					.toByteArray()));
			Editor editor = shared.edit();
			editor.putString("device", oAuth_Base64);
			editor.commit();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public Device getDeviceData() {

		Device device = null;
		String productBase64 = shared.getString("devive", null);

		// 读取字节
		byte[] base64 = Base64.decodeBase64(productBase64.getBytes());

		// 封装到字节流
		ByteArrayInputStream bais = new ByteArrayInputStream(base64);
		try {
			// 再次封装
			ObjectInputStream bis = new ObjectInputStream(bais);

			// 读取对象
			device = (Device) bis.readObject();

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return device;
	}
}
用到的Base64类来自commons-codec.jar包,下载地址:

http://commons.apache.org/proper/commons-codec/download_codec.cgi

Android之SharedPreferences 存储复杂对象 用SharedPreferences存储一些常用的设置信息很方便,但是我们知道SharedPreferences只能存储一些简单的类型 如何用SharedPreferences来存储一些复杂的对象?下面以map为例,看看SharedPreferences 存储复杂对象的方法 如果想用SharedPreferences存取复杂的数据类型,就需要对这些数据进行编码。通常会将 阅读详情

相关推荐

SharedPreferences 封装,保存基本数据类型,保存对象

SharedPreferences 封装,保存基本数据类型,保存对象

使用SharedPreferences保存对象

使用SharedPreferences保存对象

leveretz的博客 404

SharedPreferences存储复杂的对象

介绍了SharedPreferences存储复杂的对象源码!

Android进阶——Sharedpreferences保存对象和图片等复杂类型的数据

Sharedpreferences保存序列化的对象和图片等复杂类型的数据

最美不过,心中有梦,身旁有你! 1万+

MySQL常见面试题汇总(建议收藏!!!)

目录一、索引相关(1)什么是索引?(2)索引是个什么样的数据结构呢?(3)为什么使用索引?(4)Innodb为什么要用自增id作为主键?(5)Hash 索引和 B+ 树索引有什么区别或者说优劣呢?(6)什么是聚簇索引(6)非聚簇索引一定会回表查询吗?(6)聚簇索引和非聚簇索引的区别(6)MyISAM和InnoDB实现B+树索引方式的区别是什么?(6)MySQL中有四种索引类型,可以简单说说吗?(6)覆盖索引是什么?(6)联合索引是什么?为什么需要注意联合索引中的顺序?(6)创建的索引有没有被使用到?或者说怎

蔡政洁的博客 7万+

用deepseek对GPU服务器进行压力测试

利用 DeepSeek 模型对 GPU 服务器进行压力测试,核心思路是通过,验证 GPU 服务器在计算、显存、网络等维度的承载能力,同时观察稳定性与性能瓶颈。

weixin_42795092的博客 1610

Android学习--SharedPreferences存储

SharedPreferences是Android平台上一个轻量级的存储类,当程序中有一些少量数据需要持久化存储时,可以使用SharedPreferences进行存储。

weixin_66158110的博客 4013

跨阻放大器(TIA)的输入输出阻抗的定义、分析和影响因素

跨阻放大器(Transimpedance Amplifier,简称TIA)是一种常用于将电流信号转换为电压信号的放大器。在TIA电路中,输入阻抗是指输入端对电流信号的响应能力,输出阻抗是指输出端对负载电阻的驱动能力。本文将分别介绍TIA的输入和输出阻抗的定义、分析以及影响因素。

weixin_44378594的博客 1万+

android开发之SharedPreferences存储对象

懒得,只为了更好的懒惰!

ZaneLove's blog 838

使用 arxiv-sanity 实时跟进自己研究领域的Paper

介绍 arxiv.org是一个非常大的预印本资源库,里面有大量的最新的论文,但缺点是浏览、搜索和排序不是很方便。这个资源库每天会更新大量的论文,如果通过手动搜索和浏览则效率很低,高引用的好文章难以及时的找到并阅读,造成时间的浪费。因此 使用 ...

John's Blogs 8280

SAP-ML章<<<<第二节:物料账报错处理ABAP编程错误:RAISE_EXCEPTION>>>>

#SAP-ML章<<<<第一节:物料账报错处理ABAP编程错误:RAISE_EXCEPTION>>>> 1.物料账报错提示: ABAP编程错误:RAISE_EXCEPTION ABAP程序:SAPLFCML4H_RUN_PRICES应用组件CO-PC-ACT 2. 物料账报错背景: CKMLCP运行结算时 3. 解决方案: 通过DEBUG查看错误的地方 OKTZ:分析原因为:可能打包或者配置传输时弄错 ...

SAP.David.Gao的博客 1858

android sharedpreferences 存储对象,SharedPreferences存储复杂对象解决方案

/*** SharedPreferences工具类** @author bobby**/public class SharedPreferencesUtils {Context context;String name;public SharedPreferencesUtils(Context context, String name) {this.context = context;this.na...

weixin_33739480的博客 241

基于PCL的电力线点云提取与分割实现

本文基于PCL库实现电力线点云提取与分割,包含6个核心处理阶段:文件读取与结果文件夹创建、高程滤波分割候选点云、欧式聚类去噪、电力线分段提取、球形邻域搜索补全点云、最终分割与可视化保存。通过PCA计算点云线性特征(阈值0.91)筛选电力线点,采用欧式聚类(容忍度3.0)去除噪点,并针对不同规模聚类差异化设置球形搜索半径(4.0/6.0)补全点云。最终通过欧式聚类分割并可视化带颜色点云。算法对高程滤波阈值、聚类参数等具有敏感性,需根据点云特性调整优化。

weixin_45196569的博客 192

android SharedPreferences 存储对象

我们知道SharedPreferences只能保存简单类型的数据,例如,String、int等。 如果想用SharedPreferences存取更复杂的数据类型(类、图像等),就需要对这

wcqlwyt的博客 190

2026年3月GESP真题及题解(C++七级):物流网络

2026年3月GESP真题及题解(C++七级):物流网络

王老师青少年编程 1126

CycloneDDS(C++版本)开源代码在Linux(X86平台)系统上编译生成可执行文件的详细步骤

cyclonedds里面已经有现成的实例供我们参考,在根目录下的example目录下面,我们打开此目录,此目录下有CMakeLists.txt文件以及一些其他的文档,我们需要在此目录(example目录)下编译构建出。我们可以看到cyclonedds-cxx-master包下的example目录下有很多文件,包括CMakeLists.txt等,其中我们要构建的可执行文件所需要的源文件等就在。此过程会稍微慢一点。之后会报错,如下:(图片中是c版本出现的问题截图,不影响,c++也是这个影响,问题是一样的)

qq_42595610的博客 1251

SharedPreferences存储对象

最近用到了SharedPreferences,简单的String,int 什么都很很简单,但是我要存储的是一个对象啊,看提供的方法只能存储一些简单的数据类型,这个时候我就犯迷糊了。到处查资料最后解决了,贴出方法给共享。 这是存储 public void save(OAuthV1 oAuth_1) { SharedPreferences preferenc...

115

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

flutter SharedPreferences 存储对象

存储定义的logisticsDetalEntity对象 _requestLogisticDetal(BuildContext context) async { var path = "http://v.senderPhone=&receiverPhone=&dtype=&key=be0d84e149f047b1fc32b50b50d9fc7f"; var para...

u013297881的专栏 2632

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

android中通过SharedPreferences进行对象的存储

最近项目中需要存储对象数组,想利用SharePreferences进行存储,发现不行,不可以直接存储,后来查了资料,可以先专为了字节数组,存到本地,需要的时候读取转化就可以了。 SharedPreferences只能保存简单类型的数据,例 如,String、int等。如果想用SharedPreferences存取更复杂的数据类型(类、图像等),就需要对这些数据进行编码。我们通常会将 复杂类型的数

天尘 1002

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android SharedPreferences 存储复杂对象

用SharedPreferences存储一些常用的设置信息很方便,但是我们知道SharedPreferences只能存储一些简单的类型 如何用SharedPreferences来存储一些复杂的对象?下面以map为例,看看SharedPreferences 存储复杂对象的方法 如果想用SharedPreferences存取复杂的数据类型,就需要对这些数据进行编码。通常会将数据转换成Bas

操千曲而后晓声,观千剑而后识器 4832

SharedPreferences 存储复杂的对象

今晚我来介绍一下SharedPreferences如何存储复杂的对象,首先我们创建一个简单对象 package com.zb; import java.io.Serializable; public class Prodect implements Serializable { private String id; private String name; private float p

2282

android sharedpreferences 存储对象,android中SharedPreferences实现存储用户名功能

1. 简介SharedPreferences是一种轻型的数据存储方式,通过key-value键值对的方式将数据存储在xml文件中,常用于存储简单的配置信息。2. 使用方式2.1 获取SharedPreferences对象Android中可通过以下三种方式获取SharedPreferences对象:2.2.1 Context类中的getSharedPreferences()接收两个参数,第一个参数指...

weixin_39805355的博客 358
上一篇: ListView显示SD卡中的图片
下一篇: C语言实现顺序存储(数组)
IDTC
博客等级 码龄15年 22粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值