[Andriod官方训练教程]保存数据之保存键-值对的集合

原文地址:https://developer.android.com/training/basics/data-storage/shared-preferences.html

-------------------------------------------------------------------------------------------------------------------------------

If you have a relatively small collection of key-values that you'd like to save, you should use theSharedPreferences APIs. ASharedPreferences object points to a file containing key-value pairs and provides simple methods to read and write them. EachSharedPreferences file is managed by the framework and can be private or shared.

如果你有一个相对较小的键-值对集合想要存储,你应该使用SharedPreferences APIs。一个SharedPreferences对象指向一个包含键值对的文件,并且提供了一些简单的方法来进行读取和写入它们。每个SharedPreferences文件可以是私有的或是共享的,靠framework来管理它们。

This class shows you how to use the SharedPreferences APIs to store and retrieve simple values.

这节课演示如何使用SharedPreferences APIs来存储和检索简单的值。

Note: The SharedPreferences APIs are only for reading and writing key-value pairs and you should not confuse them with thePreference APIs, which help you build a user interface for your app settings (although they useSharedPreferences as their implementation to save the app settings). For information about using thePreference APIs, see theSettings guide.

注意:SharedPreferences APIs不仅仅可以读取和写入键值对,而且你不应该把它们和Preference APIs相混淆,后者帮助你为你的app设置建立一个用户接口(尽管在存储app设置时它们使用SharedPreferences实现)。

 

Get a Handle to a SharedPreferences ——得到一个SharedPreferences的句柄


You can create a new shared preference file or access an existing one by calling one of two methods:

  • 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 anyContext in your app.
  • getPreferences() — Use this from anActivity if you need to use only one shared preference file for the activity. Because this retrieves a default shared preference file that belongs to the activity, you don't need to supply a name.

你可以通过调用下面两个方法之一创建一个新的共享引用文件或进入一个已经存在的文件:

  • getSharedPreferences()——如果你需要多个 依靠名字(第一个参数)定义的共享引用文件,你可以使用这个函数。你可以从你的app中的任意Context里调用它。
  • getPreferences()——如果你在这个activity中仅仅需要使用一个共享应用文件,就使用这个方法。因为它检索一个属于这个activity的默认共享应用文件,你不需要提供一个名称。

For example, the following code is executed inside a Fragment. It accesses the shared preferences file that's identified by the resource stringR.string.preference_file_key and opens it using the private mode so the file is accessible by only your app.

例如,下面的代码在一个Fragment中执行。它依靠资源字符R.string.preference_file_key定义来访问一个共享应用文件,然后使用私有模式打开它,以使文件仅仅对你的app是可访问的。

Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(getString(R.string.preference_file_key), Context.MODE_PRIVATE);

When naming your shared preference files, you should use a name that's uniquely identifiable to your app, such as"com.example.myapp.PREFERENCE_FILE_KEY"

Alternatively, if you need just one shared preference file for your activity, you can use thegetPreferences() method:

当给你的共享引用文件命名时,你应该使用一个唯一的、可确认的名字,例如“com.example.myapp.PREFERENCE_FILE_KEY”。或者,如果你仅仅需要一个共享引用文件,你可以使用getPreferences()方法。

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

Caution: If you create a shared preferences file withMODE_WORLD_READABLE orMODE_WORLD_WRITEABLE, then any other apps that know the file identifier can access your data.

警告:如果你使用MODE_WORLD_READABLE 或者MODE_WORLD_WRITEABLE ,那么其他任何apps都知道这个文件标识符可以访问你的数据。

 

Write to Shared Preferences —— 向共享引用写入数据


To write to a shared preferences file, create a SharedPreferences.Editor by callingedit() on yourSharedPreferences.

为了向一个共享的应用文件写入,通过在你的SharedPreferences调用edit() 来创建一个SharedPreferences.Editor。

Pass the keys and values you want to write with methods such as putInt() andputString(). Then callcommit() to save the changes. For example:

利用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();

 

Read from Shared Preferences —— 从共享引用中读取数据


To retrieve values from a shared preferences file, call methods such as getInt() andgetString(), providing the key for the value you want, and optionally a default value to return if the key isn't present. For example:

为了从一个共享引用文件中检索数值,调用getInt() andgetString()等方法,提供一个你想到得到的键,和一个供选择的默认返回值(如果这个键不存在的话)。例如:

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);

 

转载于:https://www.cnblogs.com/xiaowangba/archive/2013/02/04/6314740.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全国计算机等级考试题库二级C操作题100套(第40套)

第40套: 给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。函数fun的功能是:把形参x的值放入一个新结点并插入到链表中,插入后各结点数据域的值仍保持递增有序。 请在程序的下划线处填…

java里面有控制器吗_mvc中 控制器部分可以使用Javabean完成吗?为什么?

模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。1、模型(Model)模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑.2、视图(View)视图是应用程序中用户界面相关的部分,是用户看到并与之交互…

python时间计算_python计算两日期之间工作日时长

1. 原因:使用dateutil的rrule时,计算速度比较慢 def axx(): from dateutil import rrule received_time datetime.datetime.strptime(2019-04-21 23:00:00, %Y-%m-%d %H:%M:%S) complete_time datetime.datetime.strptime(2019-04-22 01:00:00, %Y-%m-…

QSlider QLCDNumber 最常用的函数和 信号槽 (以后用到在加)

QLCDNumber : 函数: 槽: display(int); QSlider: 函数: setMinimum(int); setMaximum(int); 信号: valueChanged(int); 转载于:https://www.cnblogs.com/lc-cnblong/archive/2013/02/06/2907680.html

【进阶技术】一篇文章搞掂:Spring高级编程

本文篇幅较长,建议合理利用右上角目录进行查看(如果没有目录请刷新)。 本文基于《Spring5高级编程》一书进行总结和扩展,大家也可以自行研读此书。 十一、任务调度 任务调度主要由三部分组成 : 任务:即需要…

全国计算机等级考试题库二级C操作题100套(第41套)

更多干货推荐可以去牛客网看看,他们现在的IT题库内容很丰富,属于国内做的很好的了,而且是课程刷题面经求职讨论区分享,一站式求职学习网站,最最最重要的里面的资源全部免费!!!点击进…

2012年终总结 二

2019独角兽企业重金招聘Python工程师标准>>> 接上文。。。 经过一些搜索和了解之后,最后选定了我现在这个公司。现在,至少我没有感觉到我选错。 刚近公司,进行了新人的入职培训1天,这个主要是了解公司状况。而后&…

java核心卷一读书感想_关于JAVA核心技术(卷一)读后的思考(lambda表达式的讨论)...

lambda表达式lambda表达式是一个可传递的代码块。可以以后执行一次或者多次。在程序运行中我们经常会遇到传递代码段的情况,但是我们一般都是先构造一个对象,然后通过对象调用相应的代码块来实现传递代码块的目的,这个方法十分繁琐&#xff0…

POJ 2773 欧几里得

思路&#xff1a; 若a和b互素的话&#xff0c;则b*ta和b一定互素 用周期性做就好了 //By SiriusRen #include <cstdio> using namespace std; int s[1000050],m,k; int gcd(int a,int b){return b?gcd(b,a%b):a;} int main(){while(~scanf("%d%d",&m,&…

python语言包括哪些实现_Python语言基础考察点:python语言基础常见考题(一)

一、python是静态还是动态类型&#xff1f;是强类型还是弱类型&#xff1f; 1、动态强类型语言(不少人误以为是弱类型) 不要傻傻分不清 2、动态还是静态指的是编译期还是运行期确定类型 3、强类型指的是不会发生隐式类型转换 若类型语言强类型语言4、python作为后端语言优缺点 …

全国计算机等级考试题库二级C操作题100套(第42套)

第42套&#xff1a; 给定程序中&#xff0c;函数fun的功能是: 将s所指字符串中的所有数字字符移到所有非数字字符之后&#xff0c;并保持数字字符串和非数字字符串原有的先后次序。例如&#xff0c;形参s所指的字符串为&#xff1a;def35adh3kjsdf7。执行结果为&#xff1a;de…

不同的编译器:GCC G++ C C++的区别

gcc 是c的编译器&#xff0c;g是c的编译器。cc一般是一个符号连接&#xff0c;指向gcc。CC一般是makefile里面的一个名字&#xff0c;具体是什么根据实际情况决定。gcc和g都是GNU(组织)的一个编译器。误区一:gcc只能编译c代码,g只能编译c代码两者都可以&#xff0c;但是请注意&…

python 3.8.0安卓_Python 3.8.0稳定版正式发布

IT之家 10月15日消息 Python是一种面向对象的动态类型语言&#xff0c;最初被设计用于编写自动化脚本&#xff0c;随着版本的不断更新和语言新功能的添加&#xff0c;越来越多被用于独立的、大型项目的开发。Python 3.8.0稳定版现已正式发布&#xff0c;带来了许多新特性和优化…

全国计算机等级考试题库二级C操作题100套(第43套)

第43套&#xff1a; 给定程序中&#xff0c;函数fun的功能是&#xff1a;在形参ss所指字符串数组中查找与形参t所指字符串相同的串&#xff0c;找到后返回该串在字符串数组中的位置&#xff08;下标值&#xff09;&#xff0c;未找到则返回-1。ss所指字符串数组中共有N个内容不…

网站开发中JS中的常用语句

1.document.write( " "); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document- >html- >(head,body) 4.一个浏览器窗口中的DOM顺序是:window- >(navigator,screen,history,location,document) 5.得到表单中元素的名称和值:document.getElement…

由于开发者通过接口修改了菜单配置_开发者说:Seata 0.7.0 版本,你 get 'Metrics' 技能了吗?...

从用户的视角来感受一个开源项目的成长&#xff0c;是我们推出「开发者说」专栏的初衷&#xff0c;即在开发者进行开源项目选型时&#xff0c;提供更为立体的项目信息。专栏所有内容均来自作者原创/投稿&#xff0c;本文是「开发者说」的第9篇&#xff0c;作者郑扬勇&#xff0…

BZOJ1045 HAOI2008糖果传递(贪心)

显然最后每个小朋友所拥有的糖果数就是糖果数总和的平均数。设该平均数为t。 环的问题一般断成链&#xff0c;但这个题似乎没有什么很好的办法在枚举断点的时候快速算出答案&#xff08;我甚至不知道会不会有断点&#xff09; 于是我们假装把他断开了。假装现在我们已经知道了1…

java中的 请求体_在spring mvc test中访问请求体和请求头

我创建了一个spring boot应用程序&#xff0c;这就是我的控制器的样子 . 我使用postman在请求体中发送json&#xff0c;在请求头中发送一个字符串&#xff0c;然后进一步散列json并将其与请求头获取的字符串进行比较 . 问题是我不知道获取请求体和请求头以便使用MockMvc测试相应…

Java 多线程(三) 线程的生命周期及优先级

Java 多线程&#xff08;三&#xff09; 线程的生命周期及优先级 线程的生命周期 线程的生命周期&#xff1a;一个线程从创建到消亡的过程。 如下图&#xff0c;表示线程生命周期中的各个状态&#xff1a; 线程的生命周期可以分为四个状态&#xff1a; 1.创建状态&#xff1a; …

eclipse 导入maven项目_手把手的Spring Boot Web 项目教程,Hello Spring Boot

在开始之前&#xff0c;我们需要去创建一个SpringBoot项目&#xff0c;大家可以去 http://start.spring.io/ 这个网站生成一个项目。如图&#xff0c;这边可以对SpringBoot项目进行详细设置&#xff1a;下面这个web一定要勾选&#xff1a;SpringBoot版本号选择1.5.10全部设置好…