注:本文翻译自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);

更多相关文章

  1. Android平台向web应用get、post方式提交信息案例
  2. Android(安卓)下载zip压缩文件并解压
  3. Android(安卓)手机上传图片至javaweb服务器(servlet)
  4. DialogFragment 报错汇总
  5. Android2.2快速入门 zz
  6. Android(安卓)ART Hook & 注入实现细节
  7. android四种点击事件触发写法
  8. Android-NDK开发之基础--Android(安卓)JNI实例代码(一)-- 在JNI
  9. 修改Android模拟器的system分区,以及加入SuperSU

随机推荐

  1. Android中的进程保活(不死进程)
  2. Android(安卓)Studio编译C++代码——Rele
  3. 实现Android监控任意控件或按键双击事件
  4. Android(安卓)11 功能和 API : 面向企业
  5. Android给布局设置阴影
  6. Android(安卓)TextView两端对齐
  7. 关于android安装sdk时找不到jdk的解决办
  8. Android(安卓)ProgressBar详解以及自定义
  9. Android滚轮时间选择控件(可扩展自定义)
  10. Android(安卓)EditText 限制只能输入指定