实验二. Android的数据存储和IO——简单存储
实验目的
- 了解 SharedPreferences 的使用方法;
实验环境
- 硬件:CBT-EMB-MIP 实验平台,PC机;
- 软件:Android Studio;
实验内容
读取程序中保存的SharedPreferences信息。
实验原理
SharedPreferences 是一种轻量级的数据保存方式,通过SharedPreferences可以将 NVP(Name/Value Pair,名称/值对)保存在 Android 的文件系统中,而且 SharedPreferences 完全屏蔽的对文件系统的操作过程,开发人员仅是通过调用 SharedPreferences 对 NVP 进行保存和读取。SharedPreferences不仅能够保存 数据,还能够实现不同应用程序间的数据共享 ,SharedPreferences 支持三种访问模式:
- 私有(MODE_PRIVATE):仅有创建程序有权限对其进行读取或写入;
- 全局读(MODE_WORLD_READABLE):不仅创建程序可以对其进行读取或写入,其他应用程序也读取操作的权限,但没有写入操作的权限;
- 全局写(MODE_WORLD_WRITEABLE):创建程序和其他程序都可以对其进行写入操作,但没有读取的权限。
在使用 SharedPreferences 前,先定义 SharedPreferences 的访问模式。
下面的代码将访问模式定义为私有模式:
public static int MODE = MODE_PRIVATE;
有的时候需要将 SharedPreferences 的访问模式设定为即可以全局读,也可以全局写,这样就需要将两种模式写成下面的方式:
public static int MODE = Context.MODE_WORLD_READABLE +
Context.MODE_WORLD_WRITEABLE;
定义完访问模式后,需定义 SharedPreferences 的名称,这个名称与在 Android 文件系统中保存的文件同名。因此,只要具有相同的 SharedPreferences 名称的 NVP 内容,都会保存在同一个文件中。
public static final String PREFERENCE_NAME = "SaveSetting";
为了可以使用 SharedPreferences,需要将访问模式和 SharedPreferences 名称作为参数,传递到 getSharedPreferences()函数,并获取到 SharedPreferences 对象。代码如下:
SharedPreferences sharedPreferences = getSharedPreferences(PREFERENCE_NAME, MODE);
在获取到 SharedPreferences对象后,则可以通过SharedPreferences.Editor类 对SharedPreferences进行修改,最后调用 commit()函数保存修改内容。SharedPreferences 广泛支持各种基本数据类型,包括整型、布尔型、浮点型和长型等等。代码如下:
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("Name", "Tom");
editor.putInt("Age", 20);
editor.putFloat("Height", 180.0);
editor.commit();
如果需要从已经保存的 SharedPreferences 中读取数据,同样是调用 getSharedPreferences()函数,并在函数的第 1 个参数中指明需要访问的 SharedPreferences 名称,最后通过 get
SharedPreferences sharedPreferences = getSharedPreferences(PREFERENCE_NAME, MODE);
String name = sharedPreferences.getString("Name","Default Name");
int age = sharedPreferences.getInt("Age", 20);
float height = sharedPreferences.getFloat("Height",180.0);
实验步骤
下面将通过 SimplePreferenceDemo 示例具体说明 SharedPreferences 的文件保存位置和保存格式及其读取:
导入工程源码
- 打开Android Studio,从菜单栏选择 File > Open。
- 弹窗中浏览选择光盘src目录下的Gradle工程 CH03_SDK ,点击OK导入。
- 等待工程构建完成后,在工具栏中的Android App列表中选择本实验例程CH03_02_SimplePreferenceDemo。
演示运行
程序运行界面如图5.2.1所示:
图5.2.1
- 在界面上输入信息后,然后退出,即关闭Activity时 SharedPreferences 进行保存,当在应用程序中找到这个应用重新开启时,保存在 SharedPreferences 的信息将被读出来,并重新呈现在用户界面上。
图5.2.2
- SharedPreferences是以XML的格式被自动保存的,实例运行后,在DDMS中的File Explorer相应目录/data/data/
/shared_prefs下可以看到一个叫 SETTING_infos.xml,如图5.2.3所示: Android Studio中 DDMS
打开方法:
通过 Tools > Android > Android Device Monitor打开。
图5.2.3
- 在DDMS界面中将 SETTING_infos.xml 导出至本地。点击右上角Pull图标保存,如图5.2.4所示操作
图5.2.4
查看其代码如下:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<float name="HEIGHT" value="1.6" />
<string name="NAME"> 张三</string>
</map>