android数据存储五种方式总结.doc
Android 数据存储五种方式总结 本文介绍 Android 平台进行数据存储的五大方式, 分别如下 1 使用 SharedPreferences 存储数据2 文件存储数据 3 SQLite 数据库存储数据4 使用 ContentProvider 存储数据5 网络存储数据 下面详细讲解这五种方式的特点 第一种 使用 SharedPreferences 存储数据适用范围保存少量的数据,且这些数据的格式非常简单字符串型、基本类型的值。比如应 用程序的各种配置信息(如是否打开音效、是否使用震动效果、小游戏的玩家积分等) ,解锁口 令 密码等核心原理保存基于 XML 文件存储的 key-value 键值对数据,通常用来存储一些简单的配置 信息。通过 DDMS 的 File Explorer 面板,展开文件浏览树, 很明显 SharedPreferences 数据总是 存储在/data/data//shared_prefs 目录下。SharedPreferences 对象本身只 能获取数据而不支持存储和修改,存储修改是通过 SharedPreferences.edit获取的内部接口 Editor 对象实现。 SharedPreferences 本身是一 个接口,程序无法直接创建 SharedPreferences 实例,只能通过 Context 提供的 getSharedPreferencesString name, int mode方法来获取 SharedPreferences 实例,该方法中 name 表示要操作的 xml 文件名,第 二个参数具体如下Context.MODE_PRIVATE 指定该 SharedPreferences 数据只能被本应 用程序读、写。Context.MODE_WORLD_READABLE 指定该 SharedPreferences 数 据能被其他应用程序读,但不能写。Context.MODE_WORLD_WRITEABLE 指定该 SharedPreferences 数据能被其他应用程序读,写 Editor 有如下主要重要方法SharedPreferences.Editor clear清空 SharedPreferences 里所有数 据SharedPreferences.Editor putXxxString key , xxx value向 SharedPreferences 存入指定 key 对应的数据,其中 xxx 可以是 boolean,float,int 等各种基本 类型据SharedPreferences.Editor remove删除 SharedPreferences 中指 定 key 对应的数据项boolean commit 当 Editor 编辑完成后,使用该方法提交修改 实际案例运行界面如下这里只提供了两个按钮和一个输入文本框,布局简单,故在此不给出界面布局文件了,程序核心代码 如下 class ViewOcl implements View.OnClickListener{Overridepublic void onClickView v {switchv.getId{case R.id.btnSet//步骤1 获取输入值String code txtCode.getText.toString.trim;//步骤2-1 创建一个 SharedPreferences.Editor 接口对象,lock 表示要写入的 XML 文件名,MODE_WORLD_WRITEABLE 写操作SharedPreferences.Editor editor getSharedPreferences“lock“, MODE_WORLD_WRITEABLE.edit;//步骤2-2 将获取过来的值放入文件 editor.putString“code“, code;//步骤3 提交mit;Toast.makeTextgetApplicationContext,“口令设置成功“, Toast.LENGTH_LONG.show;break;case R.id.btnGet//步骤1 创建一个 SharedPreferences 接口对象SharedPreferences read getSharedPreferences“lock“, MODE_WORLD_READABLE;//步骤2 获取文件中的值String value read.getString“code“, ““;Toast.makeTextgetApplicationContext,“口令为“value, Toast.LENGTH_LONG.show;break;}}}读写其他应用的 SharedPreferences 步骤如下1、在创建 SharedPreferences 时,指定 MODE_WORLD_READABLE 模式, 表明该 SharedPreferences 数据可以被其他程序读取2、创建其他应用程序对应的 ContextContext pvCount createPackageContext“com.tony.app“, Context.CONTEXT_IGNORE_SECURITY;这里的 com.tony.app 就是其他程序的包名3、使用其他程序的 Context 获取对应的 SharedPreferencesSharedPreferences read pvCount.getSharedPreferences“lock“, Context.MODE_WORLD_READABLE;4、如果是写入数据,使用 Editor 接口即可,所有其他操作均和前面一致。 SharedPreferences 对象与 SQLite 数据库相比,免去了创建数据库,创建表,写 SQL 语句等诸 多操作,相对而言更加方便,简洁。但是 SharedPreferences 也有其自身缺陷,比如其职能存储 boolean,int ,float ,long 和 String 五种简单的数据类型,比如其无法进行条件查询等。所以不 论 SharedPreferences 的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完 全替代如 SQLite 数据库这样的其他数据存储方式。第二种 文件存储数据核心原理 Context 提供了两个方法来打开数据文件里的文件 IO 流 FileStream openFileString name; FileOutputStreamString name , int mode,这两个方法第一 个参数 用于指定文件名,第二个参数指定打开文件的模式。具体有以下值可选MODE_PRIVATE为默认操作模式,代表该文件是私有数据,只能被应用本身访 问,在