满堂花醉三千客,一剑霜寒十四洲。这篇文章主要讲述Android 数据存储五种方式相关的知识,希望能为你提供帮助。
1、概述
android提供了5种方式来让用户保存持久化应用程序数据。根据自己的需求来做选择,比如数据是否是应用程序私有的,是否能被其他程序访问,需要多少数据存储空间等,分别是:
① 使用SharedPreferences存储数据
② 文件存储数据
③SQLite数据库存储数据
④ 使用ContentProvider存储数据
⑤ 网络存储数据
Android提供了一种方式来暴露你的数据(甚至是私有数据)给其他应用程序 - ContentProvider。它是一个可选组件,可公开读写你应用程序数据。
2、SharedPreferences存储
SharedPreference类提供了一个总体框架,使您可以保存和检索的任何基本数据类型( boolean, float, int, long, string)的持久键-值对(基于XML文件存储的“
key-value”
键值对数据)。
通常用来存储程序的一些配置信息。其存储在“
data/data/程序包名/shared_prefs目录下。
【Android 数据存储五种方式】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.4Shared Preferences的优缺点
可以看出来Preferences是很轻量级的应用,使用起来也很方便,简洁。但存储数据类型比较单一(只有基本数据类型),无法进行条件查询,只能在不复杂的存储需求下使用,比如保存配置信息等。
推荐阅读
- 搬砖安卓入门- Java开发编程基础--进制转换和运算符
- Android 自定义SeekBar动态改变硬件音量大小实现和音量键的同步
- Android Multimedia框架总结(二十五)MediaProjection实现手机截屏(无须root)
- Android系统全貌 (转)
- Android换肤技术总结
- Android组件化
- Android 四大组件之三(广播)
- 读《Android开发权威指南》
- Android各组件/控件间通信利器之EventBus