Android学习路线(二十七)键值对(SharedPreferences)存储
假设你又一个相对较小的键值对数据想要保存,你应该使用SharedPreferences APIs。一个SharedPreferences 对象指向一个包括键值对的文件,它提供简单的方法来读写他们。每一个SharedPreferences 文件系统框架管理,它们能够是私有的也能够被共享。
本课将介绍怎样使用SharedPreferences APIs来存储和获取简单的数据。
提示: SharedPreferences APIs
仅仅能被用来操作键值对类型数据,不要把它和 Preference APIs弄混淆,Preference是用来帮助用户构建app设置界面的。很多其它关于 Preference APIs的信息,请移步Settings 向导。
获取SharedPreferences的引用(句柄)
你能够通过以下随意一种方式创建一个新的shared preference文件或者訪问一个已经存在的shared preference文件:
getSharedPreferences()—
Use this if you need multiple shared preference files identified by name, which you specify with the first parameter. You can call this from anyContextin
your app.getSharedPreferences()—
假设你通过不同的名字保存了多个shared preference文件,那么你能够使用这种方法,这种方法的第一个參数即为文件名称。你能够在应用中使用Context对象来调用它。getPreferences()—
假设你仅仅须要在这个activity中使用一个shared preference文件,那么你能够在activity中调用这种方法。由于这种方法会返回属于这个activity的一个默认的shared preference文件,你不须要为它提供一个名字。
比如,下面的方法会在 Fragment 中被运行。它在内部訪问了一个shared
preferences文件,这个文件被 R.string.preference_file_key 这个字符串指定,而且它是被私有模式(private mode)打开的,因此仅仅能被你的app訪问。
Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE);
当为你的shared preference文件命名时,你应当使用一个唯一的标识,比如"com.example.myapp.PREFERENCE_FILE_KEY"
作为替代,假设你仅仅想要在你的activity中使用一个shared preference文件,你能够使用 getPreferences()方法:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
注意: 假设你使用 MODE_WORLD_READABLE 或者 MODE_WORLD_WRITEABLE模式创建了一个shared
preference文件,那么不论什么其它知道这个文件标识的app都可以訪问到你的数据。
向Shared Preferences中写入数据
要向shared preferences文件里写入数据,你须要调用SharedPreferences的edit()方法来创建一个SharedPreferences.Editor 对象。
传入键和值给你想要调用的方法,比如 putInt() 和 putString()。然后调用commit() 方法来存储这些改变。比如:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();
从Shared Preferences中读取数据
要从shared preferences文件里获取数据,能够调用getInt()或者getString()等方法,仅仅须要提供你想要获得的值相应的key就能够了;你也能够选择再传入一个默认值,假设通过传入的key没有取道值将会返回这个默认值。比如:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.string.saved_high_score_default);
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);
Android学习路线(二十七)键值对(SharedPreferences)存储的更多相关文章
- android 学习随笔二十七(JNI:Java Native Interface,JAVA原生接口 )
JNI(Java Native Interface,JAVA原生接口) 使用JNI可以使Java代码和其他语言写的代码(如C/C++代码)进行交互. 问:为什么要进行交互? 首先,Java语言提供的类 ...
- Android学习路线(二十四)ActionBar Fragment运用最佳实践
转载请注明出处:http://blog.csdn.net/sweetvvck/article/details/38645297 通过前面的几篇博客.大家看到了Google是怎样解释action bar ...
- Android学习路线(二十一)运用Fragment构建动态UI——创建一个Fragment
你能够把fragment看成是activity的模块化部分.它拥有自己的生命周期,接受它自己的输入事件,你能够在activity执行时加入或者删除它(有点像是一个"子activity&quo ...
- Android学习路线总结,绝对干货
title: Android学习路线总结,绝对干货 tags: Android学习路线,Android学习资料,怎么学习android grammar_cjkRuby: true --- 一.前言 不 ...
- (转)Android学习路线总结,绝对干货
一.前言 不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉好无知.懂的越多的时候你才会发现懂的越少. 如果你的知识是一个圆,当你的圆越大时,圆外面的世界也就越大. ...
- Android学习路线总结,绝对干货(转)
转自:https://www.cnblogs.com/yishaochu/p/5436094.html 一.前言 不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉 ...
- Android学习路线总结,绝对干货(转)
title: Android学习路线总结,绝对干货tags: Android学习路线,Android学习资料,怎么学习androidgrammar_cjkRuby: true--- 一.前言 不知不觉 ...
- 工作不久的安卓开发者,他们是这样规划自己的Android学习路线
Android开发工作者工作不久的时候,会有一段迷茫期,觉得自己应该再学一点,却不知道从何学起,该怎样规划自己的学习路线呢?今天,我给大家梳理一下Android基础,就像建造房屋一样,要建造一座宏伟的 ...
- Android学习路线指南
看到这位大牛的博文,不禁得感概,我最近也遇到了很多问题,内心彷徨不堪,转载大牛这篇博文,是为了更好的勉励自己.原文地址在最后面. 前言 看到一篇文章中提到"最近几年国内的初级Android程 ...
- NoSql的对比以及键值对的存储方式(为什么速度特别快)
什么是NoSql NoSQL(Not Only SQL),泛指非关系型的数据库,是对不同于传统的关系型数据库的数据库管理系统的统称,强调Key-Value Stores和文档数据库的优点.为了解决大规 ...
随机推荐
- CSS选择符详解之关系选择符篇
原文:http://www.chinaz.com/web/2012/1017/278553.shtml 相信大家都对CSS选择符都不陌生,选择符包含:元素选择符.关系选择符.属性选择符.伪类选择符.伪 ...
- 杀掉linux所有进程的命令
ps -ef|grep 'opt/*/tomcat_ssi'|grep -v "grep"|awk '{print $2}'|xargs kill -9
- String类扩展
String s1=new String("fsdfsd"); String s2=new String("fsdfsd"); String a1=" ...
- js 跨浏览操作
/* 跨浏览器添加事件绑定 obj : 需要绑定js时间的对象 type: 欲绑定的事件类型,如:click ,mounseover 等事件 不需要添加on fn : 触发的脚本*/func ...
- MVC模式下xml文件的解析
第一次写blog,组织不当和出错的地方还请大家多担当哈. java操作xml文件的方式中用的较多的有四种,DOM.SAX.JDOM.DOM4J.除第一种外其余的三种我都有试过,这后三种方案中我选择用S ...
- JQuery+Js 获取浏览器高度和宽度
JQuery-------做手机Web开发做浏览器兼容用到了,所以在网上找了些汇总下. alert($(window).height()); //浏览器当前窗口可视区域高度 alert($(docum ...
- php异步调用方法实现示例
php 异步调用方法 客户端与服务器端是通过HTTP协议进行连接通讯,客户端发起请求,服务器端接收到请求后执行处理,并返回处理结果. 有时服务器需要执行很耗时的操作,这个操作的结果并不需要返回 ...
- 如何使用sublime编辑器运行python程序
现在越发喜欢sublime编辑器了,不仅界面友好美观.文艺,可扩展性还特别强. sublime本身是不具备运行python程序的能力的,需要做些设置才可以.以下是安装好sublime后设置的步骤: 点 ...
- 第几天 AC 杭电
第几天? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 转:VC中WORD,DWORD,unsigned long,unsigned short的区别(转)
typedef unsigned long DWORD;typedef int BOOL;typedef unsigned char BYTE; ...