Android:SharedPreferences详解+示例

为什么80%的码农都做不了架构师?>>> hot3.png

一、简介
SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。

二、存储位置
在/data/data/<包名>/shared_prefs目录下。

三、操作数据
SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。
具体操作过程:

1、根据Context获取SharedPreferences对象
2、利用edit()方法获取Editor对象。
3、通过Editor对象存储key-value键值对数据。
4、通过commit()方法提交数据。

四、实例代码

public class SharePreActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);//获取SharedPreferences对象Context ct = SharePActivity.this;       SharedPreferences sp = ct.getSharedPreferences("MY_PRE", MODE_PRIVATE);//存入数据Editor editor = sp.edit();editor.putString("STR_KEY", "string");editor.putInt("INT_KEY", 1);editor.putBoolean("BOO_KEY", true);editor.commit();//返回STRING_KEY的值,定义key值错误或者此key无对应value值的话返回""Log.d("look_sharePre", sp.getString("STR_KEY", ""));//如果OTHER_KEY不存在,定义key值错误或者此key无对应value值的返回值为"other"Log.d("look_sharePre", sp.getString("OTHER_KEY", "other"));}}

 注:在私有目录下生成一个MY_PRE.xml文件,里面采用键值对的形式存储数据。    

<?xml version='1.0' encoding='utf-8' standalone='yes' ?><map><string name="STR_KEY">string</string><int name="INT_KEY" value="1" /><boolean name="BOO_KEY" value="true" /></map>

五、方法详解

1、getSharedPreferences(String name, int mode)的两个参数的:
    参数1:name, 存储时的名称,比如这里的"MY_PRE";

    参数2:mode,打开方式,一般都用Activity.MODE_PRIVATE、MODE_PRIVATE

2、registerOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener          listener)
    注册一个当preference发生改变时被调用的回调函数

3、unregisterOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener      listener):
    删除当前回调函数

4、SharedPreferences.Editor接口
     用于修改SharedPreferences对象的内容,所有更改都是在编辑器所做的批处理,而不是复制回原来的SharedPreferences或持久化存储,直到你调用commit(),才会永久存储。
   

方法说明:
clear():清除内容。
commit():提交修改
remove(String key):删除preference

六、扩展功能

1、音效设置
保存应用程序当前是否 播放音效的状态。当前音效状态处于关闭时,按“+”键来开启音效,然后点击返回按钮退出程序 ,再次启动应用程序,现在的音效状态就处于开的状态。保存操作是放在 back按钮的监听事件里边完成的。 在这个程序中我们在退出时把音效状态保存到 Preferences 中,因此在启动时就读取出上次保存的数据。上次保存的是什么状态 ,在打开的时候就是什么状态。

2、记住密码



转载于:https://my.oschina.net/xsjayz/blog/95272

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

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

相关文章

类模板的分离式编译错误解决

声明&#xff1a;不谈逻辑是否能被执行成功&#xff0c;就谈编译是否成功. vs的错误: linux下g的错误: 以上错误&#xff0c;改怎么解决呢&#xff1f; 方法1&#xff1a;把实现代码和头文件写在一起 方法2&#xff1a;在.cpp文件中加入模板声明

6421B Lab5 路由和远程访问的配置与故障排除

共2个实验&#xff1a; 实验L5A&#xff1a;配置和管理网络访问 实验L5B&#xff1a;实现DirectAccess&#xff08;略&#xff09; 实验L5A&#xff1a;配置和管理网络访问 共有3个练习 练习1&#xff1a;实现***远程访问解决方案。 练习2&#xff1a;配置一个自定义的网络策略…

c++导出标准win32格式的dll

__declspec(dllexport) unsigned long long __stdcall 函数名(参数列表); 恭喜您&#xff0c;你导出来之后&#xff0c;对方无法调用 然后加入*.def文件 *.def文件内容&#xff1a; LIBRARY EXPORTS 函数名

沫沫金:收集Hibernate使用过程中的小技巧(不断更新)

[2012-12-12] *设置javabean中string字符串的数据库长度 Column(length1000) private String content; [2013-03-22 礼拜五] *保存日期yyyy-MM-dd格式 Temporal(TemporalType.DATE) private Date day; 转载于:https://blog.51cto.com/zl0828/1086585

c++跨平台写法

#if __cplusplus > 201703L || (defined _MSC_VER && _MSC_VER > 1900) #include <string_view> #else #include <boost/utility/string_view.hpp> #include <boost/functional/hash.hpp> #endif

工作中影响提高的一些想法

2019独角兽企业重金招聘Python工程师标准>>> 最近&#xff0c;一直很迷茫&#xff0c;老是觉得效率低下&#xff0c;慢慢发现是自己做事的方式有问题&#xff0c;首先觉得人懒&#xff0c;喜欢动手却不愿意去想&#xff0c;觉得慢慢做过去&#xff0c;问题就解决了&…

用vs编译openssl静态库

Perl Configure VC-WIN64A no-asm --openssldir"D:\openssl_lib" perl Configure VC-WIN32 no-asm --openssldir"D:\openssl_lib"

项目:SQL server 2008构建群集——环境部署

网络拓扑图 windows 2008 (1)操作系统&#xff1a;Microsoft Windows Server 2008 R2 (64)SQL版本 &#xff1a;SQL server 2008 R2 64 位角色: 故障转移群集节点 SQL server 故障转移群集安装域名&#xff1a;test.com主机名&#xff1a;PC1IP: 172.16.0.1 &#xff08;…

X-UA-Compatible,IE8 兼容模式

浏览器市场份额的激烈竞争&#xff0c;给网页设计开发人员带来了兼容性设计的麻烦。单单 IE 浏览器就有好几个主流版本&#xff0c;IE6、IE7、IE8 等等。当然使用诸如 IETester&#xff0c;多版本 IE 共存解决方案之类的第三方集成工具&#xff0c;可以方便代码调试。但我们总需…

两个精彩的比喻:吞吐量和延迟、信号量和互斥锁

本文为转载文章&#xff0c;觉得很有意思&#xff0c;原文在这里。 我们知道&#xff0c;计算机中有很多概念并不容易理解&#xff0c;有些时候一个好的比喻能胜过很多句解释。下面两个是我看到的两个很精彩的比喻&#xff0c;拿出来和大家分享一下。 第一比喻是关于吞吐量(thr…

FATAL ERROR: Could not find ./bin/my_print_defaults 解决方法

网上很多方法都是&#xff1a;/usr/local/mysql/scripts/mysql_install_db --usermysql 但是很有可能报错&#xff0c;找不到bin目录中的my_print_defaults错误信息&#xff1a; FATALERROR:Couldnotfind./bin/my_print_defaultsIf you are using a binary release, you must r…

Matlab/Simulink的一些功能用法笔记(3)

01--引言 最近加入到一个项目组&#xff0c;有一些测试需要去支持&#xff0c;通过了解原先团队的测试方法后&#xff0c;自己作了如下改善&#xff0c;大大提高了工作效率。这也许就是软件开发的意义吧&#xff0c;能够去除一些重复的机械的人工操作并且结果还非常不可靠。 …

整数转字符串

//支持负数转字符串 std::string num_to_str(const int value) { std::string str; std::string falg; int temp_value value; int falg_pos temp_value >> 31;//判断符号位 if (falg_pos < 0) { falg "-"; temp_value…

Delphi多媒体设计之TMediaPlayer组件(二)

Wave音频&#xff08;Wave Audio&#xff09; 播放Wave音频是最基本的多媒体操作之一&#xff0c;它可能是最普通的&#xff0c;同步播放Wave文件代码如下&#xff1a; ?1234567procedure TForm1.btn1Click(Sender: TObject);beginmpPlayer.Wait : True; { 同步播放}mpPlayer.…

字符串转数字

支持负的字符串转换 int str_to_num(const std::string& str) { bool falg false; size_t pos str.find("-"); size_t index 0; if (pos ! std::string::npos){ index; falg true; } int value 0; size_t data_si…

新一代数据中心不可忽视DAC高速铜缆直连线应用

罗森伯格亚太电子有限公司&#xff1a;李平 市场背景不断创新的网络技术和层出不穷的网络应用推动着网络飞速发展&#xff0c;作为信息数据集中交换处理和网络设备存放的数据中心&#xff0c;一直面临着高带宽&#xff0c;高可靠性和低延时的挑战。根据IDC产业发展研究报告&…

LINUX学习笔记共五部分

LINUX学习笔记1——LINUX系统命令 1. 界面切换&#xff1a; a) 进入字符界面&#xff1a;按住ctrlaltF1&#xff1a; 1. 首先需要进入用户登入&#xff0c;输入用户名和密码&#xff0c;标志&#xff1a;login 2. 注意&#xff1a;F1-F6都是字…

浅谈asio中async_accept函数占用内存高的写法

相比大家都使用过asio 中的async_accpect如果使用的好&#xff0c;内存会占用的小,下面来看一端实列:

Android开发推荐资料大合集

http://bbs.51cto.com/thread-937263-1.html转载于:https://blog.51cto.com/6297123/1094880

高清壁纸:60款可爱的圣诞节电脑桌面壁纸《下篇》

这篇文章向大家分享60款非常可爱的圣诞节电脑桌面壁纸。圣诞节越来越近了&#xff0c;赶紧来挑选一款精美的圣诞节壁纸装饰你的电脑桌面吧&#xff01;希望这些精美的高清圣诞节电脑桌面壁纸你会喜欢。推荐阅读&#xff1a;《60款美轮美奂的圣诞节电脑桌面壁纸【上篇】》&#…