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和文档数据库的优点.为了解决大规 ...
随机推荐
- DotNet中的计时器线程计时器
转载自:http://hi.baidu.com/wingingbob/item/9f1c9615f3b24d5f2b3e225c 基于多线程设计,计时器工作在ThreadPool线程上,存在事件的重入 ...
- WCF调用问题
1---WCF常用的节点绑定 basicHttpBinding和netTcpBinding 当通过Spring对象注入 如 WCFForOrderService 对象注入 public WCFForO ...
- 策略模式Strategy(对象行为型)
原文地址:http://blog.csdn.net/hguisu/article/details/75582491.策略模式:定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换.本模式使得 ...
- CUICatalog: Invalid asset name supplied: (null)
出现这个问题的根本原因是你调用了[UIImage imageNamed:name]这个方法 但是name = nil;所以报出该错误. 解决方法,在项目中搜索[UIImage imageNamed ...
- js中apply和call的用法 以及apply的妙用 (来自网络)
apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性. Function.apply(obj,args)方法能接收两个参数obj:这个对象将代替Function类里this对象args:数 ...
- js 音乐
define(function(require,exports,module){ var $music = document.getElementById('music'); var $music_m ...
- DEDE提高生成HTmL的速度
1.找到include/inc/inc_fun_SpGetArcList.php打开之. 2.查找以下代码: for($i=0;$i<$ridnum;$i++){ if($tps ...
- debain 解决无法显示中文
首先先配置编码:vim /etc/locale.gen 去掉前面的# en_US.UTF-8 UTF-8 zh_CN GB2312 zh_CN.GBK GBK zh_CN.UTF-8 UTF-8 然 ...
- IE10的bug?disabled button如何触发事件
最近碰到一个问题,IE10下的,貌似是个bug,求助! 问题表现为:在内部有dom元素的情况下,disabled状态的button会因为子元素的mouseover产生事件冒泡而触发,也就是说,disa ...
- Swift语法之 ---- ?和!区别
1.常量和变量 Swift语言中是用let来定义常量,并且要初始化.var来定义变量,在let或者var后面申明类型,冒号+空格,然后再加上类型名称. 2.optional(可选)变量 可选变量用于处 ...