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和文档数据库的优点.为了解决大规 ...
随机推荐
- Tab标签栏 切换 权威总结
angular的标签栏,有两种方法实现: 内容全部加载到页面中,再利用ng-show指令. 将每一块要加载的内容做成模板,利用ng-if指令加载. 用bootstrap的tab组件 用angular的 ...
- 获取android手机联系人信息
package com.yarin.android.Examples_04_04; import android.app.Activity; import android.database.Curso ...
- SQL从入门到基础 - 02 SQLServer的使用
一.SQLServer的管理 服务器名称:ICECOA-81DEA7A2.\SQLEXPRESS 1. 数据库->表->字段->主键 2. 编辑表 二.数据类型 1. bit:相当于 ...
- 武汉科技大学ACM:1009: 华科版C语言程序设计教程(第二版)习题5.12
Problem Description 这天老师照例给小豪出了一道题目:老师给小豪一个字符串,让小豪将该字符串逆序输出. Input 第一行包括一个T,表示有多少组测试数据: 接下来T行,每行包括一个 ...
- QT高级运用之粒子模拟(Particle Simulations)
粒⼦模拟是计算机图形技术的可视化图形效果.典型的效果有:落叶,⽕焰,爆炸,流星,云等等.它不同于其它图形渲染, 粒⼦是基于模糊来渲染.它的结果在基于像素下是不可预测的.粒⼦系统的参数描述了随机模拟的边 ...
- linux初识-02常用命令
文件目录操作命令 ls 现实文件和目录列表 ls -l 列出文件的详细信息 ls -a 列出当前目录所有文件 包括隐藏的文件 mkdir 创建目录 -p 父目录不存在的情况下先生成父目录 cd 切换目 ...
- div边框阴影的实现【转载】
box-shadow:阴影水平偏移值(可取正负值): 阴影垂直偏移值(可取正负值):阴影模糊值:阴影颜色: Firefox支持Box Shadow(阴影):-moz-box-shadow:2px 2p ...
- java虚拟机内存分析
1.大致来说java虚拟机分为:堆 栈 栈在数据结构就是那个先进后出的栈.堆...这名字我一听就觉得大..毕竟我们形容东西多又没什么大多的组织的时候就是一堆一堆的....(原谅我发散性的思维,我是妹 ...
- Math对象
<script type="text/javascript"> /* Math对象常用的方法: ceil 向上取整 floor() 向下取整 random() 随机数方 ...
- Linq延迟执行
LINQ中大部分查询运算符都有一个非常重要的特性:延迟执行.这意味着,他们不是在查询创建的时候执行,而是在遍历的时候执行(换句话说,当enumerator的MoveNext方法被调用时).让我们考虑下 ...