首页 > 代码库 > Android 数据存储五种方式
Android 数据存储五种方式
1、概述
Android提供了5种方式来让用户保存持久化应用程序数据。根据自己的需求来做选择,比如数据是否是应用程序私有的,是否能被其他程序访问,需要多少数据存储空间等,分别是:
① 使用SharedPreferences存储数据
② 文件存储数据
③ SQLite数据库存储数据
④ 使用ContentProvider存储数据
⑤ 网络存储数据
Android提供了一种方式来暴露你的数据(甚至是私有数据)给其他应用程序 - ContentProvider。它是一个可选组件,可公开读写你应用程序数据。
2、SharedPreferences存储
SharedPreference类提供了一个总体框架,使您可以保存和检索的任何基本数据类型( boolean, float, int, long, string)的持久键-值对(基于XML文件存储的“key-value”键值对数据)。
通常用来存储程序的一些配置信息。其存储在“data/data/程序包名/shared_prefs目录下。
xml 处理时Dalvik会通过自带底层的本地XML Parser解析,比如XMLpull方式,这样对于内存资源占用比较好。
2.1 我们可以通过以下两种方法获取SharedPreferences对象(通过Context):
① getSharedPreferences (String name, int mode)
当我们有多个SharedPreferences的时候,根据第一个参数name获得相应的SharedPreferences对象。
② getPreferences (int mode)
如果你的Activity中只需要一个SharedPreferences的时候使用。
这里的mode有四个选项:
Context.MODE_PRIVATE
该SharedPreferences数据只能被本应用程序读、写。
Context.MODE_WORLD_READABLE
该SharedPreferences数据能被其他应用程序读,但不能写。
Context.MODE_WORLD_WRITEABLE
该SharedPreferences数据能被其他应用程序读和写。
Context.MODE_MULTI_PROCESS
sdk2.3后添加的选项,当多个进程同时读写同一个SharedPreferences时它会检查文件是否修改。
2.2 向Shared Preferences中写入值
首先要通过 SharedPreferences.Editor获取到Editor对象;
然后通过Editor的putBoolean() 或 putString()等方法存入值;
最后调用Editor的commit()方法提交;
//Use 0 or MODE_PRIVATE for the default operation SharedPreferences settings = getSharedPreferences("fanrunqi", 0);SharedPreferences.Editor editor = settings.edit();editor.putBoolean("isAmazing", true); // 提交本次编辑editor.commit();
同时Edit还有两个常用的方法:
editor.remove(String key) :下一次commit的时候会移除key对应的键值对 editor.clear():移除所有键值对
2.3 从Shared Preferences中读取值
读取值使用 SharedPreference对象的getBoolean()或getString()等方法就行了(没Editor 啥子事)。
SharedPreferences settings = getSharedPreferences("fanrunqi", 0);boolean isAmazing= settings.getBoolean("isAmazing",true);
2.4 Shared Preferences的优缺点
可以看出来Preferences是很轻量级的应用,使用起来也很方便,简洁。但存储数据类型比较单一(只有基本数据类型),无法进行条件查询,只能在不复杂的存储需求下使用,比如保存配置信息等。
Android 数据存储五种方式