Android 数据存储之 SharedPreferences储存
------------------------------------------SharedPreferences存储--------------------------------------------
SharedPreferences 使用键值对方式来存储数据的。当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出。
SharedPreferences 支持多种不同数据类型的存储,可以按照需要取出数值型,或者字符型的数据。
-----------------------------------------获取SharedPreferences对象-----------------------------------------
要想使用 SharedPreferences 来存储数据,首先要获取到 SharedPreferences 对象。Android 主要提供了三种方法来得到 SharedPreferences 对象。
1. Context 类中的 getSharedPreferences() 方法
此方法接受两个参数,第一个参数用于指定 SharedPreferences 文件的名称,如果指定的文件不存在则会创建一个。
SharedPreferences 文件都是存放在 /data/data/<包名>/shared_prefs/ 目录下的。
第二个参数用于指定操作模式,主要为 MODE_PRIVATE(默认操作模式) 和 MODE_MULTI_PROCESS(多进程读写) 。
2. Activity 类中的 getPreferences() 方法
这个方法和 Context 中的 getSharedPreferences() 方法类似,不过它只接收一个操作模式参数,使用这个方法时会自动将当前活动的类名作为 SharedPreferences 的文件名。
3. PreferenceManager 类中的 getDefaultSharedPreferences() 方法
这是一个静态方法,它接收一个 Context 参数,并自动使用当前应用程序的包名作为前缀来命名 SharedPreferences 文件。
得到了 SharedPreferences 对象之后,就可以开始向 SharedPreferences 文件中储存数据了。
---------------------------------------将数据存储到SharePreferences中--------------------------------------
使用 SharedPreferences 对象储存数据:
1. 调用 SharedPreferences 对象的 edit() 方法来获取一个 SharePreferences.Editor 对象。
2. 向 SharedPreferences.Editor 对象中添加数据,如果添加一个字符串则使用 putString() 方法,以此类推。
3. 调用 commit() 方法将添加的数据提交,从而完成数据存储操作。
将数据存储到 SharedPreferences 文件中:
public void onClick(View v) {
//获取 SharedPreferences 对象
SharedPreferences shared = getSharedPreferences("data", MODE_PRIVATE);
//获取 SharedPreferences.Editor 对象
SharedPreferences.Editor editor = shared.edit();
//以键值对方式传入数据
editor.putString("name", "Jay Chou");
editor.putInt("age", 37);
editor.putBoolean("married", true);
//提交数据
editor.commit();
}
最终得到的 data.xml 文件内容:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="name">Jay Chou</string>
<int name="age" value="37" />
<boolean name="married" value="true" />
</map>
可以看到所有的数据都已经成功保存下来了,并且SharedPreferences 文件是使用XML格式来对数据进行管理的。
注意:如果要清除 XML 中的所有数据,使用 SharedPreferences.Editor 对象的 clear() 方法,就能够将 SharedPreferences 文件中的数据全部清除。
---------------------------------------从SharePreferences中读取数据--------------------------------------
相比从 SharedPreferences 文件中存储文件,读取文件显得更加简单。SharedPreferences 对象中提供了一系列的 get 方法用于对存储的数据进行读取,每种 get 方法都对应了 SharedPreferences.Editor 中的一种 put 方法。
这些 get 方法都接收两个参数,第一个参数是键,传入存储数据时使用的键就可以得到相应的值了,第二个参数是默认值,即表示当传入的键找不到对应的值时,会以什么样的默认值进行返回。
获取 SharedPreferences 文件数据,并打印到控制台:
public void onClick(View v) {
//获取SharedPreferences对象
SharedPreferences shared = getSharedPreferences("data", MODE_PRIVATE);
//获取xml数据
String name = shared.getString("name", "null");
int age = shared.getInt("age", 0);
boolean married = shared.getBoolean("married", false);
//获取不存在的数据
String hobby = shared.getString("hobby", "unknown");
//打印日志记录
Log.d("woider", "name: " + name);
Log.d("woider", "age: " + age);
Log.d("woider", "married: " + married);
Log.d("woider", "hobby: " + hobby);
}
日志截图:

Android 数据存储之 SharedPreferences储存的更多相关文章
- Android数据存储-通过SharedPreferences实现记住密码的操作
在Android中登陆中,为了实现用户的方便,往往需要根据用户的需要进行记住密码的操作,所以,在Android数据存储中SharedPreferences恰恰可以实现这一点 下面,小编将带领大家通过S ...
- Android数据存储方式--SharedPreferences
Android数据存储方式有如下四种:SharedPreferences.存储到文件.SQLite数据库.内容提供者(Content provider).存储到网络服务器. 本文主要介绍一下Share ...
- Android数据存储三剑客——SharedPreferences、File、SQLite
Android中常用的数据存储一般有三种方式:SharedPreferences.文件和SQLite数据库,用来保存需要长时间保存的数据.本文将通过几个具体的小实例来讲解这三种方式的具体实现. 数据存 ...
- Android数据存储之SharedPreferences存储
安卓系统为应用提供了系统级的配置存储方案,它就是靠SharedPreferences接口来实现的,该接口存储的所有信息都是以名值对的形式保存,但其保存的数据类型也仅限于基本数据类型,如字符串.整形.布 ...
- android数据存储之SharedPreferences
一.SharedPreferences简介 (1)SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activ ...
- Android数据存储之SharedPreferences使用
SharedPreferences是Android中一种轻型的数据存储类.本质上是基于XML文件进行存储Key-Value键值对的数据,生成的XML文件的目录在/data/data/包名/Shared ...
- Android数据存储之SharedPreferences及如何安全存储
前言: 最近一直在学习ios的数据存储,当学习到NSUserDefaults的时候让我回想起了SharedPreferences,今天闲来无事,想着总结一下SharedPreferences的使用. ...
- Android数据存储之sharedpreferences与Content Provider
android中对数据操作包含有: file, sqlite3, Preferences, ContectResolver与ContentProvider前三种数据操作方式都只是针对本应用内数据,程序 ...
- Android数据存储:Shared Preferences
Android数据存储之SharedPreferences 在Android系统中提供了多种存储技术.通过这些存储技术可以将数据存储在各种存储介质上, Android 为数据存储提供了如下几种方式:1 ...
随机推荐
- MONO加载DLL调试命令
http://www.mono-project.com/docs/advanced/pinvoke/dllnotfoundexception/ http://www.mono-project.com/ ...
- HTTP1.0与HTTP1.1的区别
HTTP/1.1与HTTP/1.0的区别 下面主要从几个不同的方面介绍HTTP/1.0与HTTP/1.1之间的差别,当然,更多的内容是放在解释这种差异背后的机制上. 1 可扩展性 可扩展性的一个重要原 ...
- Effective Objective-C 2.0 — 第二章 对象、消息、运行期 - 第六条:理解“属性”这一概念
开发者通过对象来 存储并传递数据. 在对象之间传递数据并执行任务的过程就叫做“消息传递”. 这两条特性的工作原理? Objective-C运行期环境(Objective-C runtime) ,提供了 ...
- TextBox 英文文档
TextBox Extend from $.fn.validatebox.defaults. Override defaults with $.fn.textbox.defaults. The Tex ...
- [Asp.Net]获取客户端ip和mac地址
摘要 有时候,我们需要获取客户端的一些信息,以便进行统计.比如:客户端的唯一标识,ip等信息 IP 通过获取HTTP_X_FORWARDED_FOR,或者REMOTE_ADDR可以获取客户端的ip. ...
- root用户自动登录
编辑文件: /etc/gdm/custom.conf的内容: 1 # GDM configuration storage 2 3 [daemon] 4 #GtkModu ...
- mysql tinyint
在MySQL的数据类型中,Tinyint的取值范围是:带符号的范围是-128到127.无符号的范围是0到255(见官方<MySQL 5.1参考手册>http://dev.mysql.com ...
- ASO优化总结(基于网络分享的知识总结归纳)
如何优化应用标题? 注意关键字的长度,尽量保证每一个关键字小于10个字符.保持快速更新,因为每次更新,你都将有机会删除表现不佳的关键字以 及增添新的关键字.在ASO中使用关键字的正确做法 标题,并非越 ...
- [PHP知识点乱炖]四、全局变量——小偷从良记
本章要讲的是PHP的全局变量. 这里讲个小故事: 很多年前,一个很聪明的小偷,想去偷一户人家的钱.可是他偷不到主人的钥匙,怎么办呢? 他想到了一个办法,去之前嚼了一块口香糖,口香糖的牌子是“大大泡泡糖 ...
- sql server cpu占用过高优化
SQLSERVER排查CPU占用高的情况 今天中午,有朋友叫我帮他看一下数据库,操作系统是Windows2008R2 ,数据库是SQL2008R2 64位 64G内存,16核CPU 硬件配置还是比较高 ...