Android - 数据存储 -存储键值对
如果你有少量的键值数据需要存储,可以使用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 - 数据存储 -存储键值对的更多相关文章
- map集合键值对存储,键值不重复,值可以重复
		
import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; import java.util.Li ...
 - android sp文件一个键值保存多条信息
		
之前碰到过这样的问题,sp文件只能够append,或者清空.其实一个键值,通过,分割,或者替代可以实现多条信息的存储.下面是一个举例: package com.ctbri.weather.utils; ...
 - 去除json数据的某些键值对
		
假如现在要处理的原始数据是字符串.形式如下: var vJson = { name: "张三", class: "软件工程一班" ,other:"无效 ...
 - android 添加一个按键键值【转】
		
本文转载自:http://blog.csdn.net/u012719256/article/details/52526046 1.frameworks/base/data/keyboards/Gene ...
 - android 添加新的键值,自定义按键-2【转】
		
本文转载自:http://blog.csdn.net/mr_raptor/article/details/8053871 在Android中,上层可使用的键值默认情况下是92个,从0-91:一般情况下 ...
 - android 添加新的键值,自定义按键【转】
		
本文转载自:http://blog.csdn.net/mr_raptor/article/details/8053871 在Android中,上层可使用的键值默认情况下是92个,从0-91:一般情况下 ...
 - Android无线测试之—KEYCODE键值对应大全
		
KEYCODE列表电话键键名 描述 键值 KEYCODE_CALL 拨号键5 KEYCODE_ENDCALL 挂机键6 KEYCODE_HOME 按键Home3 KEYCODE_ME ...
 - Android——数据的存储和访问
		
1.数据文件的存取操作 我们可以将数据存取在Android应用数据的默认存储地址,其地址为:安装包/data/data/<package name>/files/ 1)向文件中写入数据 p ...
 - 修改json数据中key(键值)
		
//方法一:修改JSONObject的键 public static JSONObject changeJsonObj(JSONObject jsonObj,Map<String, String ...
 - c#  数据拼接成键值对格式
		
public static object FindLayoutTypes() { //地鼓.地裂.墙裂.井水.泉水 var sb = new StringBuilder(); sb.Append(ge ...
 
随机推荐
- LINUX专题之操作系统字符集
			
原创作品,出自 "深蓝的blog" 博客,欢迎转载.转载时请务必注明下面出处,否则追究版权法律责任. 深蓝的blog: http://blog.csdn.net/huangyanl ...
 - 初尝Java序列化/反序列化对象
			
看个类: package com.wjy.bytes; import java.io.Serializable; public class ObjTest implements Serializabl ...
 - Phalcon之 表单(Forms)
			
Phalcon中提供了 Phalcon\Forms组件以方便开发人员创建和维护应用中的表单. 以下的样例中展示了主要的用法: <?php use Phalcon\Forms\Form, Phal ...
 - ubuntu12 下怎样上网
			
1,host 就是WIN7 使用WIFI上网 2.打开设置你的VM 8 edit--Virutal network editor--VMnet0--Bridged (connect VMs to di ...
 - LeetCode :: Binary Tree Zigzag Level Order Traversal  [tree, BFS]
			
Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...
 - 华为C8816电信版ROOT过程
			
华为C8816电信版ROOT方法, 网上的方法都不太靠谱.. 昨天弄了好久, 最终搞定.. 整理了一下.. 实用到的就方便多了. <方法不再啰嗦, 都有说明> 1. 获取手机解锁passw ...
 - HdU 4046 Panda 段树
			
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4046 意甲冠军:到了bw组成的长度为n的字符串(n<=50000).有m次操作(m<=1000 ...
 - poj3264(线段树区间求最值)
			
题目连接:http://poj.org/problem?id=3264 题意:给定Q(1<=Q<=200000)个数A1,A2,```,AQ,多次求任一区间Ai-Aj中最大数和最小数的差. ...
 - RabbitMq消息序列化简述
			
涉及网络传输的应用.序列化不可避免. 发送端以某种规则将消息转成byte数组进行发送. 接收端则以约定的规则进行byte[]数组的解析. 序列化的选择能够是jdk序列化,hessian,jackson ...
 - java性能缓慢
			
虚拟帝国上面有很多营销软件是JAVA开发的!创业公司通常选择开源技术减少项目管理费用. 除了使用Java编程语言,创业公司也可以利用Java开发工具包的好处(JDK),Java运行时环境(JRE)和J ...