第8章数据存储与访问 杨刚 中国人民大学
杨刚 中国人民大学 第8章 数据存储与访问
本章学习目标: ■掌握各种文件存储的区别与适用情况 ·了解SQLite数据库的特点和体系结构 ■掌握SQLite数据库的建立和操作方法 理解ContentProvideri的用途和原理 ■掌握ContentProviderl的创建与使用方法
本章学习目标: n 掌握SharedPreferences的使用方法 n 掌握各种文件存储的区别与适用情况 n 了解SQLite数据库的特点和体系结构 n 掌握SQLite数据库的建立和操作方法 n 理解ContentProvider的用途和原理 n 掌握ContentProvider的创建与使用方法
8.1 SharedPreferences ·SharedPreferences是一种轻量级的数据保存方式 ■ 通过SharedPreferences开发人员可以将名称/值对 (Name/Value Pair)保存在Android的文件系统中, 而且SharedPreferences?完全屏蔽了对文件系统的操 作过程 使用SharedPreferences类创建的命名映射,可以在 会话之间持久化,并在同一个应用程序沙箱中运 行的程序组件之间共享
8.1 SharedPreferences n SharedPreferences是一种轻量级的数据保存方式 n 通过SharedPreferences开发人员可以将名称/值对 (Name/Value Pair)保存在Android的文件系统中, 而且SharedPreferences完全屏蔽了对文件系统的操 作过程 n 使用SharedPreferences类创建的命名映射,可以在 会话之间持久化,并在同一个应用程序沙箱中运 行的程序组件之间共享
8.1 SharedPreferences I存储的SharedPreferencesy是以XML文件的格式方 式自动保存的,可以利用开发环境中DDMS在file explorer中的/data/data/程序包名/shared prefs中来查 看
8.1 SharedPreferences n 存储的SharedPreferencesy是以XML文件的格式方 式自动保存的,可以利用开发环境中DDMS在file explorer中的/data/data/程序包名/shared_prefs中来查 看
8.1SharedPreference ·SharedPreferences支持3种访问操作模式 ▣私有(MODE PRIVATE):仅创建 SharedPreferencest的程序有权限对其进行读取或写 入 口全局读(MODE WORLD READABLE):不仅创 建程序可以对其进行读取或写入,其它应用程序也 具有读取操作的权限,但没有写入操作的权限 口全局写(MODE WORLD WRITEABLE):所有 程序都可以对其进行写入操作,但没有读取操作的 权限 ▣后两种模式可以组合
8.1SharedPreference n SharedPreferences支持3种访问操作模式 q 私有(MODE_PRIVATE):仅创建 SharedPreferences的程序有权限对其进行读取或写 入 q 全局读(MODE_WORLD_READABLE):不仅创 建程序可以对其进行读取或写入,其它应用程序也 具有读取操作的权限,但没有写入操作的权限 q 全局写(MODE_WORLD_WRITEABLE):所有 程序都可以对其进行写入操作,但没有读取操作的 权限 q 后两种模式可以组合
8.1 SharedPreferences 定义SharedPreferencesl的访问模式,如下定义访问 模式为私有 public static int MODEMODE PRIVATE: ·有的时候需要将SharedPreferences的访问模式设定 为即可以全局读,也可以全局写, public static int MODE Context.MODE WORLD READABLE+ Context.MODE WORLD WRITEABLE:
8.1 SharedPreferences n 定义SharedPreferences的访问模式,如下定义访问 模式为私有 public static int MODE = MODE_PRIVATE; n 有的时候需要将SharedPreferences的访问模式设定 为即可以全局读,也可以全局写, n public static int MODE = Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE;
8.1 SharedPreferences a除了定义SharedPreferences的访问模式,还要定义其名称 ,这个名称也是SharedPreferences在Android文件系统中保 存的文件名称 口一般将SharedPreferences名称声明为字符串常量,这样可 以在代码中多次使用 1 public static final String PREFERENCE NAME="SaveSetting"; 口使用SharedPreferences时需要将访问模式和 SharedPreferences名称作为参数传递到 getSharedPreferences()函数,则可获取到SharedPreferences 实例 1 SharedPreferences sharedPreferences getSharedPreferences(PREFERENCE_NAME,MODE);
8.1 SharedPreferences q 除了定义SharedPreferences的访问模式,还要定义其名称 ,这个名称也是SharedPreferences在Android文件系统中保 存的文件名称 q 一般将SharedPreferences名称声明为字符串常量,这样可 以在代码中多次使用 1 public static final String PREFERENCE_NAME = "SaveSetting"; q 使用SharedPreferences时需要将访问模式和 SharedPreferences名称作为参数传递到 getSharedPreferences()函数,则可获取到SharedPreferences 实例 1 SharedPreferences sharedPreferences = getSharedPreferences(PREFERENCE_NAME, MODE);
8.1 SharedPreferences 口在获取到SharedPreferences?实例后,可以通过 SharedPreferences.Editor类对SharedPreferences进行修改 ,最后调用commit()函数保存修改内容 SharedPreferences广泛支持各种基本数据类型,包括整 型、布尔型、浮点型和长型等 sharedPreferences getSharedPreferences(PREFS READ WRITE,Context.MODE W ORLD READABLE Context.MODE WORLD_WRITEABLE); Editor prefsPrivateEditor sharedPreferences.edit(); prefsPrivateEditor.putString(KEY_READ_WRITE,read_writeField.getText().toString()); booleanresult prefsPrivateEditor.commit();
8.1 SharedPreferences q 在获取到SharedPreferences实例后,可以通过 SharedPreferences.Editor类对SharedPreferences进行修改 ,最后调用commit()函数保存修改内容 q SharedPreferences广泛支持各种基本数据类型,包括整 型、布尔型、浮点型和长型等 sharedPreferences = getSharedPreferences(PREFS_READ_WRITE, Context.MODE_W ORLD_READABLE + Context.MODE_WORLD_WRITEABLE); Editor prefsPrivateEditor = sharedPreferences.edit(); prefsPrivateEditor.putString(KEY_READ_WRITE, read_writeField.getText().toString()); booleanresult = prefsPrivateEditor.commit();
8.1 SharedPreferences 建议使用Apply.方法,调用它会安全地异步写入 Shared Preference Editor。异步保证了安全性。 ■对比commit方法 editor.apply();
n 建议使用Apply方法,调用它会安全地异步写入 Shared Preference Editor。异步保证了安全性。 n 对比commit方法 8.1 SharedPreferences editor.apply();
8.1 SharedPreferences o如果需要从已经保存的SharedPreferences中读取数据, 同样是调用getSharedPreferences()函数,并在函数第1个 参数中指明需要访问的SharedPreferences名称,最后通 过getO函数获取保存在SharedPreferences中的 NVP get:()函数的第1个参数是键的名称 口第2个参数是在无法获取到数值的时候使用的缺省值 SharedPreferences sharedPreferences getSharedPreferences(PREFERENCE_NAME,MODE); 2 String name=sharedPreferences.getString("Name","Default Name"); 3 int age sharedPreferences.getInt("Age",20); 4 float height-sharedPreferences.getFloat("Height"1.81f)
q 如果需要从已经保存的SharedPreferences中读取数据, 同样是调用getSharedPreferences()函数,并在函数第1个 参数中指明需要访问的SharedPreferences名称,最后通 过get()函数获取保存在SharedPreferences中的 NVP q get()函数的第1个参数是键的名称 q 第2个参数是在无法获取到数值的时候使用的缺省值 1 SharedPreferences sharedPreferences = getSharedPreferences(PREFERENCE_NAME, MODE); 2 String name = sharedPreferences.getString("Name","Default Name"); 3 int age = sharedPreferences.getInt("Age", 20); 4 float height = sharedPreferences.getFloat("Height",1.81f); 8.1 SharedPreferences