首页 > 代码库 > 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 数据存储五种方式