您的位置:首页 > 移动开发 > Android开发

android的五种存储机制

2016-05-29 14:26 260 查看
Android提供了5种方式存储数据:

--使用SharedPreferences存储数据;

--文件存储数据; 

--SQLite数据库存储数据;

--使用ContentProvider存储数据;

--网络存储数据;

Preference,File,DataBase这三种方式分别对应的目录是: 

/data/data/Package Name/Shared_Pref;

 /data/data/Package Name/files;

 /data/data/Package Name/database 

第一种:
使用SharedPreferences存储数据

核心原理:保存基于XML文件存储的key-value键值对数据,通常用来存储一些简单的配置信息。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过SharedPreferences.edit()获取的内部接口Editor对象实现。 SharedPreferences本身是一 个接口,程序无法直接创建SharedPreferences实例,只能通过Context提供的getSharedPreferences(String
name, int mode)方法来获取SharedPreferences实例,该方法中name表示要操作的xml文件名

第二种: 文件存储数据

核心原理: Context提供了两个方法来打开数据文件里的文件IO流 FileInputStream openFileInput(String name); FileOutputStream(String name , int mode),这两个方法第一个参数 用于指定文件名,第二个参数指定打开文件的模式。具体有以下值可选:

MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可   以使用Context.MODE_APPEND

MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。

MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;

MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。

第三种:SQLite存储数据

SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。现在的主流移动设备像Android、iPhone等都使用SQLite作为复杂数据的存储引擎,在我们为移动设备开发应用程序时,也许就要使用到SQLite来存储我们大量的数据,所以我们就需要掌握移动设备上的SQLite开发技巧

SQLiteOpenHelper类介绍

SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本的更新。一般是建立一个类继承它,并实现它的onCreate和onUpgrade方法。

我们在Dao构造方法中实例化sqliteDBHelper并获取一个SQLiteDatabase对象,作为整个应用的数据库实例;在增删改信息时,我们采用了事务处理,确保数据完整性;最后要注意释放数据库资源db.close(),这一个步骤在我们整个应用关闭时执行,这个环节容易被忘记,所以大家要注意。

第四种:ContentProvider存储

ContentProvider向我们提供了我们在应用程序之前共享数据的一种机制,而我们知道每一个应用程序都是运行在不同的应用程序的,数据和文件在不同应用程序之间达到数据的共享不是没有可能,而是显得比较复杂,而正好Android中的ContentProvider则达到了这一需求,比如有时候我们需要操作手机里的联系人,手机里的多媒体等一些信息,我们都可以用到这个ContentProvider来达到我们所需。

1)、ContentProvider为存储和获取数据提供了统一的接口。ContentProvide对数据进行封装,不用关心数据存储的细节。使用表的形式来组织数据。

2)、使用ContentProvider可以在不同的应用程序之间共享数据。 

3)、Android为常见的一些数据提供了默认的ContentProvider(包括音频、视频、图片和通讯录等)。 

总的来说使用ContentProvider对外共享数据的好处是统一了数据的访问方式。

第五种:网络存储

所谓网络存储其实就是从服务器端获取资源,利用HttpURLConnection对象,我们可以从网络中获取网页数据和文件数据;向Internet发送请求参数:利用HttpURLConnection对象,我们可以向网络发送请求参数.

最后当然少不了总结啦,总得来说我们平常在开发中还是要实现“因地制宜”的,那么在什么情况下使用什么什么存储呢,来看一下:

1、简单数据和配置信息,SharedPreference是首选;

2、如果SharedPreferences不够用,那么就创建一个数据库;

3、结构化数据,一定要创建数据库,虽然麻烦,但是利于后边操作;

4、文件就是用来存储文件也就是非配置信息或结构化数据,如文本文件,二进制文件,多媒体文件,下载的文件等;

5、ContentProvider.适用场景

1) ContentProvider为存储和读取数据提供了统一的接口

2) 使用ContentProvider,应用程序可以实现数据共享

3) android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,通讯录等)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android