android SharedReferences的部分用法

Android性能优化之SharedPreferences Android 存储优化系列专题 SharedPreferences 系列 《Android 之不要滥用 SharedPreferences》 《Android 之不要滥用 SharedPreferences(2)— 数据丢失》 ContentProvider 系列(待更) 《Android 存储选项之 ContentProvider 启动过程源码分析》 《Android 存储选项之 ContentProvider 深入分析》 对象序列化系列 《Android 对象序列化之你不知道的 Serializab. 阅读详情

很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友。对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用properties属性文件或者xml进行保存。如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<packagename>/shared_prefs目录下:

SharedPreferencessharedPreferences= getSharedPreferences("test",Context.MODE_PRIVATE);

Editoreditor= sharedPreferences.edit();//获取编辑器

editor.putString("username","com360");

editor.putInt("age",20);

editor.commit();//提交修改

生成的test.xml文件内容如下:

<?xmlversion='1.0' encoding='utf-8' standalone='yes' ?>

<map>

<stringname="username">com360</string>

<intname="age" value="20" />

</map>

因为SharedPreferences背后是使用xml文件保存数据,getSharedPreferences(name,mode)方法的第一个参数用于指定该文件的名称,名称不用带后缀,后缀会由Android自动加上。方法的第二个参数指定文件的操作模式,共有四种操作模式 。如果希望SharedPreferences背后使用的xml文件能被其他应用读和写,可以指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。

另外Activity还提供了另一个getPreferences(mode)方法操作SharedPreferences,这个方法默认使用当前类不带包名的类名作为文件的名称。


访问SharedPreferences中的数据代码如下:

SharedPreferencessharedPreferences= getSharedPreferences("test",Context.MODE_PRIVATE);

//getString()第二个参数为缺省值,如果preference中不存在该key,将返回缺省值

Stringname = sharedPreferences.getString("username","");

intage = sharedPreferences.getInt("age",1);

如果访问其他应用中的Preference,前提条件是:该preference创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE权限。如:有个<packagename>为com.scl.action的应用使用下面语句创建了preference。

getSharedPreferences("test",Context.MODE_WORLD_READABLE);

其他应用要访问上面应用的preference,首先需要创建上面应用的Context,然后通过Context 访问preference ,访问preference时会在应用所在包下的shared_prefs目录找到preference :

ContextotherAppsContext= createPackageContext("com.scl.action",Context.CONTEXT_IGNORE_SECURITY);

SharedPreferencessharedPreferences= otherAppsContext.getSharedPreferences("test",Context.MODE_WORLD_READABLE);

Stringname = sharedPreferences.getString("username","");

intage = sharedPreferences.getInt("age",0);

如果不通过创建Context访问其他应用的preference,也可以以读取xml文件方式直接访问其他应用preference对应的xml文件,如:

File xmlFile =new File(“/data/data/<package name>/shared_prefs/test.xml”);//<packagename>应替换成应用的包名

 实现代码

 

package com.scl.sharereference;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

public class Reference {
	private Context context;
	public Reference(){}
	public Reference(Context context){
		this.context = context;
	}
	public void saveString(String filename,String key,String value){
		SharedPreferences preferences = 
			context.getSharedPreferences(filename, Context.MODE_PRIVATE);
		Editor editor = preferences.edit();
		editor.putString(key, value);
		editor.commit();
	}
	public String getString(String filename, String key){
		SharedPreferences preferences = 
			context.getSharedPreferences(filename, Context.MODE_PRIVATE);
		return preferences.getString(key, null);
	}
}
单元测试代码

package com.scl.xml.test;

import com.scl.sharereference.Reference;

import android.test.AndroidTestCase;
import android.util.Log;

public class SharedPereferenceTest extends AndroidTestCase {
	private static final String TAG = "SharedPereferenceTest";
	//存储
	public void testSharedPereference() throws Throwable{
		Reference reference = new Reference(this.getContext());
		reference.saveString("test", "username", "com360");
	}
	//获取
	public void testGetPereference() throws Throwable{
		Reference reference = new Reference(this.getContext());
		String username = reference.getString("test", "username");
		Log.i(TAG, username);
	}
}


Android 中SharedPreferences的详解 一、SharedPreferences 首选项 介绍 存储软件的配置信息 存储的信息:很小,简单的数据;比如:自动登录,记住密码,小说app(返回后再次进入还是 原来看的页数),按钮的状态。 特点:当程序运行首选项里面的数据会全部加载进内容。 二、SharedPreferences的简单使用 1.布局文件中,写入两个按钮,保存到SP,和从SP中获取数据 布局代码的文件就不再写了。 2.看MainActivity的代码,里面有注释详解 package com.example.spdemo; import 阅读详情

相关推荐

SharedPreferences工具类

封装了SharedPreferences的所有功能。支持java基本类型的存取数据等功能。

Android操作文件存储信息 利用SharedReference存储信息(获取SDCARD大小)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34384915的博客 214

android中使用SharedPreferences进行数据存储的操作方法

很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友。对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是 j2se应用,我们会采用properties属性文件或者xml进行保存。如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?Android 平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用 SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package

Sharedreference与Application的区别

两者忽然间发现搞不清楚了,正好现在需要。应用的场景是:记录用户名,用户的登录状态,用户Id等等信息。 在android中使用SharedPreferences进行数据存储的操作方法。Android 平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用 SharedPreferences保存数据,其背后是用xml文件存放数据,文件

beiyouzidonghua的专栏 584

UM2 3D 打印机 DIY 实践 (2) 电路篇

涉及到的东西非常多,实际上后面还会讲到。主要部件清单: 主板 mega2560 + Ramps1.4 + LCD12864 各一张 42 x38mm x3,xyz 轴各一台 42 x23mm x1,用在挤出机 泰坦远程挤出机 x1 TMC2225 驱动板 x4, 替代a4988、TMC2208,静音效果好,性价比高 s-250-12v 20A开关电源 x1。功率必须足够大,宁可选大一点的 大功率 MOS 管,25A x1 NTC .

afeiqiang的专栏 3601

TMS320F28377D的sys/bios双核工程配置详解——从零搭建到RAM优化

本文详细解析了TMS320F28377D双核系统在sys/bios环境下的工程配置与RAM优化策略。从开发环境搭建、SYS/BIOS工程创建到双核CMD文件配置,提供了实战技巧和常见问题解决方案,帮助开发者高效实现电力电子控制系统中的双核协作与性能优化。

weixin_28292761的博客 600

【Rust笔记】03-引用

rust笔记-03-引用

feiyan的博客 671

第十一届全国大学生GIS应用技能大赛——广西区域发展布局示意图

我们需要制作一幅广西区域发展布局示意图,最终成图参考“数据”文件夹中的广西区域发展布局示意图.png。地图使用的投影坐标系是 Asia_North_Albers_Equal_Area_Conic,其中地理坐标系是China_Geodetic_Coordinate_System_2000,中央经线东经 105°,标准纬线是北纬 25°和北纬 47°,出图比例尺 1:4,780,000。

@HNUSTer的博客 7799

SharedPreferences详解及其ANR解决方案

SharedPreferences 是 Android 平台上用于存储轻量级键值对数据的一种机制。它提供了一种简单的方式来保存和获取应用程序的数据。 SharedPreferences 存储的数据是基于键值对的,每个存储项都有一个唯一的键和对应的值。可以通过键来检索特定的值,也可以修改、添加或删除已存储的值。

fumeidonga的博客 1668

知识图谱-KGE-语义匹配-双线性模型-2018:SimplE

【paper】 SimplE Embedding for Link Prediction in Knowledge Graphs 【简介】 本文是加拿大英属哥伦比亚大学的两位学者发表在 NIPS 2018 上的工作,文章提出了 SimplE(Simple Embedding)。这篇和前面一篇差不多,也是对 1927 年的 CP 进行改进(简化),传统CP为实体分配的两个向量是独立训练的,SimplE利用关系的逆在三元组打分函数中加上了一个对称项,使得每个实体的两个向量依赖学习,并且 SimplE 的复杂度随

u013250861的博客 958

基于STM32设计自动输液监测系统(241)

该系统集成了液位传感模块、光电传感器、电机模块、按键模块和OLED显示屏等多个功能模块,以实现全面的输液过程监控和控制。液位传感模块能够实时监测输液瓶中的液位,当液位到达限定值时,系统会自动控制步进电机夹紧输液管,并发出报警提醒,确保输液过程不会因液位过低而中断。

1343

Android学习--SharedPreferences存储

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

weixin_66158110的博客 4013

组合预测 | Python实现LSTM-XGBoost长短期记忆网络组合极限梯度提升树股票价格预测

组合预测 | Python实现LSTM-XGBoost长短期记忆网络和极限梯度提升树股票价格预测

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 2353

安卓学习之持久化技术(数据库操作)

1.持久化技术简介 让数据在瞬时状态和持久化状态进行转换的机制。 主要包括文件存储、shareOreference存储以及数据库存储。 2.文件存储 1.将数据存储到文件中 Context 类中提供了一个openFileOutput() 方法,可以用于将数据存储到指定的文件中 这个方法接收两个参数,第一个参数是文件名,在文件创建的时候使用的就是这个名称,注意 这里指定的文件名不可以包含路径,因为所有的文件都是默认存储到/data/data//files/目录下的。第二个参数是文件的操作模式,主要有两

qq_39176095的博客 224

多模态论文笔记——CogVLM和CogVLM2

本文详细介绍LoRA版本的多模态模型——CogVLM和CogVLM2。在SD3中使用其作为captioner基准模型的原因和优势。

haopinglianlian的博客 2204

【滚雪球学数学建模】第1节·建模入门+三步法+案例

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 6412

面试

apply和commit区别 service怎么停止 有序广播 onreceive是主线程吗 hashmap 红黑树 插件化组件化 数据库存储的数据是什么格式 共享参数 里面是不是线程安全 以进程通信 但是谷歌不建议 SP使用上的优化 把复杂数据存放到多个sp文件内 还有里面的容灾是会创建一个新的文件临时保存上一次的数据 加载一个sp文件后会将数据保存到内存中...

u014611039的博客 152

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

存储方式SharePreferences

SharePreferences Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File   除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/&lt;包名&gt...

linuxstuding 407

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Android-第十三节02SharedPreferences详解

一、SharedPreferences概述 二、SharedPreferences的使用方法 2.1写数据 2.2读数据 三、SharedPreferences案例-qq登录demo 3.1第一步,创建activity 3.2第二步,设置启动跳转页面 3.3第三步,设置登录界面 3.4存在的两个问题 问题一 问题二

H_xxxxd的博客 2784

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

android 缓存工具类,android 缓存工具类 SharePreferenceUtil

各种数据类型的put和get都已经实现,且实现了缓存的clear和remove方法。直接上码:public class SharePreferenceUtil {private static final String TAG = SharePreferenceUtil.class.getSimpleName();private static final String DEFAULT_SHARE_N...

weixin_29738537的博客 459

SharePreferences保存数据(附带工具类)

在我们开发应用需要保存一些配置参数,对于Android应用来说,我们最适合采用SharedPreferences保存数据,它是一个轻量级的存储类,特别适合用于保存软件配置参数。**使用SharePreferences保存数据** 使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data//shared_prefs目录下。例如: Share

奋斗的小菜鸡的博客 678

android 经常用到的一些工具类--SharedPreferencesUtils

SharedPerferencesUtils

吴心良的博客 1182

Android每周一轮子:SharedPreferences

前言 距离上一期的每周一轮子已经过去了很久了,离开的这段时间,去创业做了产品经理的工作,然后项目都失败了,现在重启开始新的技术之路,前段时间在面试,所以对于基础知识点进行了重新的整理,所以结合着面试的内容,将对Android中的第三方框架还有FrameWork层的内容进行更系统的一个整理。开始第一篇,准备先从一个简单的入手,我们最常见的Android中的最常见的一种数据持久化方式,Sha...

weixin_42304618的博客 1032

Android sharepreference槽点及改进方案

1 概述简介 1.1 简介 众所周知,SharedPreferences是一种轻型的Android数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。它的存储位置是在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。比较经典的使用方式例如用户输入框对过往登录账户的存储。 1.2 使用方式 实现SharedPrefe

lzq520210的博客 3796

android 大文本存储,Android操作文件存储信息 利用SharedReference存储信息(获取SDCARD大小)...

1、机身内存package com.pas.loginservice;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io....

weixin_39926639的博客 227
上一篇: android 使用pull生成xml
下一篇: android中SQLite数据库的操作
com360
博客等级 码龄16年 225粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值