如果你有少量的键值数据需要存储,可以使用SharedPreferencesAPI。SharedPreferences对象指向一个包含键值对的文件并且提供了一些简单的方法来读取它们。每个SharedPreferences文件由framework管理而且可以时私有的或者共享的。

这里将要介绍如何使用SharedPreferences API来存储和找回数据

注意:SharedPreferences API是用来读写键值对的,所以不要和Preference API弄混了。Perference是用来为app设置创建用户界面的(虽然它们也用SharedPreferences来实现app设置的数据存储)。关于Preference API的信息, 参考Settings guide

获得SharedPreferences的句柄

你可以创建一个新的preference 文件也可以通过下面的两个方法使用一个已有的:

  • getSharedPreferences()。使用这个方法,如果你需要获得以名字为标识的多个共享的preference文件,第一个参数传递名字。你可以在app中任何的context调用

  • getPreferences()。在Activity中使用这个方法,如果你需要activity的一个共享的preference文件。因为这个方法返回了一个activity的默认共享的preference文件,所以不需要提供名字。

例如,下面是一段在Fragment中执行的代码。它访问了由R.string.preference_file_key标识的共享preferences文件然后用私有模式打开它,咋样这个文件只有你的app能进入。

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

命名preference文件时,应该用一个可唯一标识app的名字,比如"com.example.myapp.PREFERENCE_FILE_KEY"

或者,你只需要activity的一个preference 文件, 你可以使用getPreferences()方法:

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

注意:如果用MODE_WORLD_READABLE或者MODE_WORLD_WRITEABLE创建preferences文件,那么其他知道文件标识的app都可以访问这个数据。

写入Preferences

如果要写入preferences文件,创建一个SharedPreferences.Editor然后调用SharedPreferences的edit()。

把想要存储的键值对通过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();

读Preferences

如果要从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 - 数据存储

下一篇:Android - 数据存储 -存储文件

Android - 数据存储 -存储键值对的更多相关文章

  1. map集合键值对存储,键值不重复,值可以重复

    import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; import java.util.Li ...

  2. android sp文件一个键值保存多条信息

    之前碰到过这样的问题,sp文件只能够append,或者清空.其实一个键值,通过,分割,或者替代可以实现多条信息的存储.下面是一个举例: package com.ctbri.weather.utils; ...

  3. 去除json数据的某些键值对

    假如现在要处理的原始数据是字符串.形式如下: var vJson = { name: "张三", class: "软件工程一班" ,other:"无效 ...

  4. android 添加一个按键键值【转】

    本文转载自:http://blog.csdn.net/u012719256/article/details/52526046 1.frameworks/base/data/keyboards/Gene ...

  5. android 添加新的键值,自定义按键-2【转】

    本文转载自:http://blog.csdn.net/mr_raptor/article/details/8053871 在Android中,上层可使用的键值默认情况下是92个,从0-91:一般情况下 ...

  6. android 添加新的键值,自定义按键【转】

    本文转载自:http://blog.csdn.net/mr_raptor/article/details/8053871 在Android中,上层可使用的键值默认情况下是92个,从0-91:一般情况下 ...

  7. Android无线测试之—KEYCODE键值对应大全

    KEYCODE列表电话键键名 描述 键值 KEYCODE_CALL 拨号键5    KEYCODE_ENDCALL 挂机键6    KEYCODE_HOME 按键Home3    KEYCODE_ME ...

  8. Android——数据的存储和访问

    1.数据文件的存取操作 我们可以将数据存取在Android应用数据的默认存储地址,其地址为:安装包/data/data/<package name>/files/ 1)向文件中写入数据 p ...

  9. 修改json数据中key(键值)

    //方法一:修改JSONObject的键 public static JSONObject changeJsonObj(JSONObject jsonObj,Map<String, String ...

  10. c# 数据拼接成键值对格式

    public static object FindLayoutTypes() { //地鼓.地裂.墙裂.井水.泉水 var sb = new StringBuilder(); sb.Append(ge ...

随机推荐

  1. hdu1506(dp求最大子矩阵)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1506 分析: 对于每个单位矩阵,我们先求出连续比它高的最左边的下标假设为l,然后求出比它高的最右边的下 ...

  2. xml(3)--dom4j实现crud操作

    1.XML解析技术概述 (1)XML解析方式分为两种:dom和sax     dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种标准方 ...

  3. 全面剖析Redis Cluster原理和应用 (转)

    1.Redis Cluster总览 1.1 设计原则和初衷 在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子.最核心的目标有三个: 性能:这是Redis赖以生 ...

  4. Berkeley DB 使用

    http://www.ibm.com/developerworks/cn/linux/l-embdb/index.html UNIX/LINUX平台下的数据库种类非常多,参考资料1中 列举了其中的大部 ...

  5. Android之场景桌面(一)

    声明:转载请务必注明出处,本文代码和主题仅供学习交流,请勿用于商业用途. 引言:最近Android场景桌面开始流行起来了,跟原始的Android桌面相比,场景桌面能逼真的模拟各种自然物体,并且通过点击 ...

  6. V5

    系统设置--关于手机--版本号点5下--进去开发模式--打开开发选项--打开USB调试.然后在连接第三方助手软件 http://bbs.ztehn.com/thread-19037-1-1.html

  7. hdu 4771 Stealing Harry Potter&#39;s Precious

    题目:给出一个二维图,以及一个起点,m个中间点,求出从起点出发,到达每一个中间的最小步数. 思路:由于图的大小最大是100*100,所以要使用bfs求出当中每两个点之间的最小距离.然后依据这些步数,建 ...

  8. c++自带倒置数组函数

    #include<stdio.h> #include <vector> #include <queue> #include<algorithm> usi ...

  9. Windows phone 8 学习笔记(7) 设备

    原文:Windows phone 8 学习笔记(7) 设备 本节主要涉及到 Windows phone 8 手机支持的各类设备,包括相机.设备状态,振动装置等.还有各类感应器,包括磁力计.加速度器和陀 ...

  10. eclipse 重构(转)

    Eclipse中的重构类型        如果你看一下Eclipse的重构菜单,可以看到四部分.第一部分是撤销和重做.其他的三部分包含Eclipse提供的三种类型的重构. 第一种类型的重构改变代码的物 ...