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 提供的 getSharedPreferences(String 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 putXxx(String key , xxx value):向 SharedPreferences 存入指定 key 对应的数据,其中 xxx 可以是 boolean,float,int 等各种基本 类型据SharedPreferences.Editor remove():删除 SharedPreferences 中指 定 key 对应的数据项boolean commit(): 当 Editor 编辑完成后,使用该方法提交修改 实际案例:运行界面如下这里只提供了两个按钮和一个输入文本框,布局简单,故在此不给出界面布局文件了,程序核心代码 如下: class ViewOcl implements View.OnClickListener{@Overridepublic void onClick(View v) {switch(v.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.makeText(getApplicationContext(),“口令设置成功“, 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.makeText(getApplicationContext(),“口令为:“+value, Toast.LENGTH_LONG).show();break;}}}读写其他应用的 SharedPreferences: 步骤如下1、在创建 SharedPreferences 时,指定 MODE_WORLD_READABLE 模式, 表明该 SharedPreferences 数据可以被其他程序读取2、创建其他应用程序对应的 Context:Context 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 openFile(String name); FileOutputStream(String name , int mode),这两个方法第一 个参数 用于指定文件名,第二个参数指定打开文件的模式。具体有以下值可选:MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访 问,在