大多数Android应用程序需要保存数据,即使只为了不丢失用户的进度,在onPause()中保存应用程序的状态信息。大部分不平凡的应用程序也需要保存用户设置,而一些应用程序必须在文件和数据库中管理大量信息。本课程介绍你在Android的主要数据存储选项,包括:

·在一个共享的首选项文件中保存键-值对简单数据类型

·Android的文件系统中保存任意文件

·使用SQLite进行数据库管理


课程

保存键-值集

了解使用共享首选项文件存储少量的信息键-值对的

保存文件

了解保存基本文件如要存储的数据一般都是按顺序阅读的长序列

将数据保存在SQL数据库

了解如何使用SQLite数据库读取和写入结构化的数据

5.1保存键-值集


如果你有一个相对较小的键-值的集合想要保存,你应该使用SharedPreferencesAPISharedPreferences对象指向一个包含键-值对文件,并提供简单的方法来读取和写入它们。每个SharedPreferences文件由框架管理,可以设为私有或共享。

本课程向您展示如何使用SharedPreferencesAPI来存储和检索简单的值。

注:SharedPreferencesAPI只能读取和写入键-值对,你不应该将它与PrefernceAPI混淆,Prefernce帮助你为你的应用程序设置建立一个用户界面(虽然它们保存应用程序设置是通过SharedPreferences来实现)。对于使用的PreferenceAPI的信息,请参阅“设置”指南。


获取SharedPreferences的句柄

您可以通过调用以下两种方法之一来创建一个新的或访问一个现有的共享偏好文件:

·getSharedPreferences()-如果你需要使用多个不同文件名的共享偏好文件,可以使用这个方法,用第一个参数指定文件名你可以在您的应用程序的任何上下文Context)中调用这个方法

·getPreferences()-如果你只需要为活动(Activity)使用一个共享偏好文件,可以在活动使用此方法因为它检索的默认共享偏好文件从属于活动,所以你不需要提供一个文件名

例如,下面的代码在一个碎片(Fragment)里执行。它访问由资源字符串R.string.preference_file_key所标识的共享文件,并使用私有的模式,所以只有您的应用程序才能访问该文件。

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

(在新版的API中,已经不需要通过getActivity()方法得到context对象,可直接调用getSharedPreferences()方法,译者注)

为共享偏好文件命名时,你应该使用一个应用程序能唯一识别的名称,如“com.example.myapp.PREFERENCE_FILE_KEY”

另外,如果你的活动只需要一个共享的偏好设置文件,您可以使用getPreferences()方法:

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

注意:如果您以MODE_WORLD_READABLEMODE_WORLD_WRITEABLE方式创建了一个共享的偏好文件,任何其它知道该文件标识符的应用程序都可以访问您的数据。


写入共享首选项

要写入一个共享的喜好文件,对您的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();
 

读取共享首选项

从一个共享的偏好文件检索值,可以调用调用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用户输入系统详细说明
  2. cocos2d-x 2.0.1版本的使用 在android 上运行 初学篇(2)
  3. 从主流音乐应用程序中拔身出来,试试 Rocket Player 播放器吧
  4. 第四章 常见 Android(安卓)文件格式(一)(库文件、APK)
  5. Android(安卓)Studio如何在项目中使用jni以及OpenCV库
  6. android merge标签
  7. Android的内外存储、SharedPreferences(偏好设置)及获取空间使用情
  8. Android(安卓)换肤功能实现
  9. 「Do.014」Android(安卓)实战项目(5)—— gradle 配置release与deb

随机推荐

  1. Android自定义进度条-带文本(文字进度)的
  2. Android4: Status bar or System UI
  3. android中button设计UI的一个小技巧
  4. Android实现图片轮播切换
  5. Android删除系统自带软件对照表
  6. Android 7.0 之后抓包 unknown 和证书无
  7. android ADB (1) 键盘之adb keycode值
  8. Android 使用 AudioManager 类控制音量
  9. Android DrawerLayout和NavigationView
  10. Android自动化工具Monkeyrunner使用(三)