【Android Developers Training】 24. 保存键值对
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好。
原文链接:http://developer.android.com/training/basics/data-storage/shared-preferences.html
如果你有一些希望存储的相对较小的键值对数据集,你应该使用SharedPreferences的APIs。一个SharedPreferences对象指向一个包含键值对的文件,同时它还提供了一些简便的方法来支持写和读。每个SharedPreferences文件由框架管理并且可以规定是私有的还是共享的。
这节课将会介绍如何使用SharedPreferencesAPIs来存储和恢复简单的数据。
Note:
SharedPreferences的API只能用来读写键值对,不要将它与Preference的APIs搞混了,后者被用来根据你的应用设置帮助你构建一个UI(虽然他们使用SharedPreferences作为它们的实现来保存应用的配置)更多关于使用Preference的信息,阅读:Settings。
一). 获取一个SharedPreferences句柄
你可以通过下面方法的任意一个来创建一个新的shared preferences文件或者获得一个已经存在的文件:
- getSharedPreferences():使用该方法如果你需要多个以名字作为标识的shared preferences文件,名字是方法的第一个参数。你可以在你应用中的任何Context下调用这个方法。
- getPreferences():在一个Activity使用该方法如果你在这个activity中仅需要一个shared preferences文件。因为这将获得一个属于该activity的默认shared preferences文件,所以你不需要提供一个名称。
例如,下面的代码在一个fragment中执行。它获得一个shared preferences文件,该文件的名字由资源字符串“R.string.preference_file_key”所指定,并且使用私有模式打开,这样这个文件就只会被你的应用所访问:
- Context context = getActivity();
- SharedPreferences sharedPref = context.getSharedPreferences(
- getString(R.string.preference_file_key), Context.MODE_PRIVATE);
当为shared preferences文件起名时,你应该使用一个独有的可以识别出你的应用的名字,比如:“com.example.myapp.PREFERENCE_FILE_KEY”。
当然,如果你只想要在activity中使用一个shared preferences文件,你可以使用getPreferences()方法:
- SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
Caution:
如果你通过MODE_WORLD_READABLE或者MODE_WORLD_WRITEABLE创建了一个shared preferences文件,那么任何知道这个文件名的其他应用都可以获取你的数据。
二). 写入SharedPreferences
为了写入一个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();
三). 读取SharedPreferences
为了从shared preferences文件中获取数据,调用响应的方法,比如:getInt()和getString()等,提供值所对应的键,还有一个可选的默认值,在键不存在时会返回该值:
- 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 Developers Training】 24. 保存键值对的更多相关文章
- 【Android Developers Training】 23. 序言:保存数据
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 26. 在SQL数据库中保存数据
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 25. 保存文件
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 100. 使用Intent修改联系人数据
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 91. 解决云储存冲突
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 18. 重新创建一个Activity
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 17. 停止和重启一个Activity
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 4. 启动另一个Activity
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 1. 创建一个Android项目工程
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
随机推荐
- OpenStack修复影响宿主机的QEMU漏洞CVE-2017-2615
距离这个虚拟化层面的漏洞公告发出已有两个多月了,漏洞详情可以查看: 360安全应急响应中心-360发现QEMU严重漏洞 影响国内大部分公有云 简单来说是通过Cirrus VGA操作读取宿主机内存中的内 ...
- 在CentOS上使用Jexus托管运行 ZKEACMS
ZKEACMS Core 是基于 .net core 开发的,可以在 windows, linux, mac 上跨平台运行,接下来我们来看看如何在 CentOS 上使用Jexus托管运行 ZKEACM ...
- .Net程序员学用Oracle系列(10):系统函数(中)
1.四大转换函数 1.1.TO_CHAR 1.2.TO_NUMBER 1.3.TO_DATE 1.4.CAST 2.两大近似值函数 2.1.ROUND 2.2.TRUNC 3.正则函数 3.1.正则函 ...
- Error:Android Source Generator: [sdk] Android SDK is not specified.
有时候使用intellij idea 带入android 项目,运行提示Error:Android Source Generator: [sdk] Android SDK is not specifi ...
- opencv探索之路(十二):感兴趣区域ROI和logo添加技术
在图像处理领域,有一个非常重要的名词ROI. 什么是ROI? 它的英文全称是Region Of Interest,对应的中文解释就是感兴趣区域. 感兴趣区域,就是我们从图像中选择一个图像区域,这个区域 ...
- 2017 UESTC Training for Graph Theory
图论姿势太弱,这套题做了好久.. A:枚举最短那条边,然后最小生成树那种操作,1 和 n 联通就算答案 B:考虑到假如我们能凑出x的话,那很明显我们也能凑出任意数表示x + ai,考虑选取一个ai,然 ...
- 探讨SQL Server并发处理队列数据不阻塞解决方案
前言 之前对于并发这一块确实接触的比较少,自从遇到现在的老大,每写完一块老大都会过目一下然后给出意见,期间确实收获不少,接下来有几篇会来讲解SQL Server中关于并发这一块的内容,有的是总结,有的 ...
- API文档工具-Swagger的集成
最近安装了API文档工具swagger,因为Github上已有详细安装教程,且安装过程中没有碰到大的阻碍,所以此文仅对这次安装做一份大致记录 相关网站 Swagger 官方地址: http://swa ...
- vue-动手做个选择城市
查看完整的代码请到 我的github地址 https://github.com/qianyinghuanmie/vue2.0-demos 一.结果展示 二.前期准备: 1.引入汉字转拼音的插件, ...
- js实现分页
<html> <head> <meta charset='utf-8'> <script type="text/javascript" s ...