在Android开发中,经常会遇到这样一种情况,即需要将用户偏好设置(如用户偏好的app色彩主题)、与特定登录用户相关的设置(如不同登陆用户的偏好)、整个app的生命周期内的设
在Android开发中,经常会遇到这样一种情况,即需要将用户偏好设置(如用户偏好的app色彩主题)、与特定登录用户相关的设置(如不同登陆用户的偏好)、整个app的生命周期内的设置(如首次登陆显示介绍页)存储在用户本地,那么首先考虑使用sharedPreferences。这是Android中专门用来存储轻量级键值对数据的类,会在本地以xml文件形式存储。
一、 运行机制
接口:SharedPreferencesImpl在该接口中,定义了一个Editor接口、一个edit方法、多个get方法、一个监听器用于监听内容变更。其中,Editor接口主要用来写入数据,edit方法用来对外提供一个editor实例,get方法用来获取键值对,监听器用于实现类中监听。
接口:Editor接口中含有多个put方法、一个commit方法等。之所以要独立出一个接口来进行写操作,是为了保证数据写入的完整性。主要考虑的场景是如果同时要写入多条键值对,这些键值对不会逐条写入文件中,而是先打包在一起,再一次性写入,即one-at-a-time。具体实现方法是在Editor实现一个HashMap来暂存要写入的数据,先把所有键值对写入内存中的该hashMap中,然后再一次性写入文件中。
该过程可以概括为先commitToMemory, 再writeToFile。
二、 使用方法
首先,想写入键值对,要先获取一个sharedPreferences对象。
此时需要提供两个要素:context上下文对象,对应的文件名字。
这里,我们要明确这些键值对的实际存储方式:它们是以多个文件的形式存储: /data/data/{packageName}/shared_prefs/{name}.xml。其中,实际的{name}.xml是在程序中指定的。
那么,我们只要调用context.getSharedPreferences(name, mode)即可获取到所在packageName文件夹里对应的name.xml文件映射过来的SharedPreferences对象。其中,mode是读取文件的方式。
示例:
1、使用SharedPreferences保存数据方法如下:
//实例化SharedPreferences对象(第一步)
SharedPreferences mySharedPreferences= getSharedPreferences("test",
Activity.MODE_PRIVATE);
//实例化SharedPreferences.Editor对象(第二步)
SharedPreferences.Editor editor = mySharedPreferences.edit();
//用putString的方法保存数据
editor.putString("name", "Karl");
editor.putString("habit", "sleep");
//提交当前数据
editor.commit();
//使用toast信息提示框提示成功写入数据
Toast.makeText(this, "数据成功写入SharedPreferences!" , Toast.LENGTH_LONG).show();
执行以上代码,SharedPreferences将会把这些数据保存在test.xml文件中,可以在File Explorer的data/data/相应的包名/test.xml 下导出该文件,并查看。
2、使用SharedPreferences读取数据方法如下:
//同样,在读取SharedPreferences数据前要实例化出一个SharedPreferences对象
SharedPreferencessharedPreferences= getSharedPreferences("test",
Activity.MODE_PRIVATE);
// 使用getString方法获得value,注意第2个参数是value的默认值
String name =sharedPreferences.getString("name", "");
String habit =sharedPreferences.getString("habit", "");
//使用toast信息提示框显示信息
Toast.makeText(this, "读取数据如下:"+"\n"+"name:" + name + "\n" + "habit:" + habit,
Toast.LENGTH_LONG).show();
三、理解
我们可以简单的理解为:在手机本地某个地方会存放我们自定义的xml文件,每个文件用来存放相关的键值对数据。比如我们希望存储用户的偏好设置,即可创建一个名为UserPref的SharedPreferences并读写即可。
四、比较getSharedPreferenced和getPreference
getSharedPreferenced获取的文件是在package内都可以使用context对象获取到的,只需要指定name就可以获取到特定的xml文件。
但是,getPreference方法是专门用在Activity内部的,创建的xml文件只能在该Activity上下文内获取,而且不需要指定名字,这个xml文件只属于这个Activity。
其它就没有区别了。唯一区别就是一个权限域的区别。
示例:
Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences("userPref", MODE_PRIVATE);
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
您可能感兴趣的文章:android开发教程之实现toast工具类Android应用中使用SharedPreferences类存储数据的方法Android通过"记住密码"功能学习数据存储类SharedPreferences详解及实例android实用工具类分享(获取内存/检查网络/屏幕高度/手机分辨率)Android屏幕分辨率工具类使用详解封装的android监听手指左右滑动屏幕的事件类分享Android开发实现的IntentUtil跳转多功能工具类【包含视频、音频、图片、摄像头等操作功能】Android开发之多媒体文件获取工具类实例【音频,视频,图片等】android 一些工具类汇总Android开发中4个常用的工具类【Toast、SharedPreferences、网络及屏幕操作】
--结束END--
本文标题: 简介Android应用中sharedPreferences类存储数据的用法
本文链接: https://www.lsjlt.com/news/25728.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
一口价域名售卖能注册吗?域名是网站的标识,简短且易于记忆,为在线用户提供了访问我们网站的简单路径。一口价是在域名交易中一种常见的模式,而这种通常是针对已经被注册的域名转售给其他人的一种方式。
一口价域名买卖的过程通常包括以下几个步骤:
1.寻找:买家需要在域名售卖平台上找到心仪的一口价域名。平台通常会为每个可售的域名提供详细的描述,包括价格、年龄、流
443px" 443px) https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294.jpg https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294-768x413.jpg 域名售卖 域名一口价售卖 游戏音频 赋值/切片 框架优势 评估指南 项目规模
0