Android数据存储五种方式
1.SharedPreferences
2.文件存储
3.SQLite数据库
4.ContentProvider
5.网络存储
SharedPreferences
简介
SharedPreferences简称Sp(后面都会称Sp),是一种轻量级的数据存储方式,采Key/value的方式 进行映射,最终会在手机的/data/data/package_name/shared_prefs/目录下以xml的格式存在。Sp通常用于记录一些参数配置、行为标记等!因为其使用简单,所以大多数开发者用起来很爽!但是请注意:千万不要使用Sp去存储量大的数据,也千万不要去让你的Sp文件超级大,否则会大大影响应用性能, 甚至出现ANR,没错是ANR(下面会分析)。
特点
适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型、基本类型的值。比如应用程序的各种配置信息(如是否打开音效、是否使用震动效果、小游戏的玩家积分等),解锁口 令密码等。
获取方式
- SharedPreferences sharedPreferences = getSharedPreferences(NAME_SP_TEST, Context.MODE_PRIVATE);
更新数据
通过Eidt更新数据:
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(“Lbjfan”,true);
文件存储
简介
文件存储是Android中最基本的一种数据存储方式,它不对数据进行任何的格式化处理,所有的数据都是原封不动的保存在文件中去,因而比较适合用于存储一些简单的文本数据或二进制数据,如果你想使用文件存储的方式来保存一些较为复杂的文本数据,就需要定义一套自己的格式规范,这样可以方便之后将数据从文件中重新解析出来。
方法
创建一个内部存储的私有文件:
- 调用Context的openFileOutput()函数,填入文件名和操作模式,它会返回一个FileOutputStream对象。
- 通过FileOutputStream对象的write()函数写入数据。
- FileOutputStream对象的close ()函数关闭流。
SQLite数据库
SQLite特点主要包括:
- 轻量级 一个动态库、单文件
- 独立性 没有依赖、无须安装
- 隔离性 全部在一个文件夹中
- 跨平台 支持众多操作系统
- 多语言接口 支持众多编程语言
- 安全性 事务
打开模式
借助SQLiteOpenHelper来实现数据库的管理的情况下,打开数据库(SQLiteDatabase),有两种模式:
1.mySQLiteOpenHelper.getReadableDatabase();
2.mySQLiteOpenHelper.getWritableDatabase();
两个方法相似,但是getWritableDatabase在磁盘已满的情况下话,会报异常,getReadableDatabase在这样的情况下会以只读的模式打开。
ContentProvider
简介
ContentProvider(内容提供者)是安卓四大组件之一,用来共享应用程序内人数据当你需要把你的应用程序的数据共享给其他的应用程序的时候,才需要用它
该组件对外提供了其他应用可以直接访问的增删改查方法。
无论数据的来源是什么,ContentProvider都会认为是一种表,然后把数据组织成表格。
提供的方法
- query:查询
- insert:插入
- update:更新
- delete:删除
- getType:得到数据类型
- onCreate:创建数据时调用的回调函数
使用方法
1.定义自己的ContentProvider类,该类需要继续Android提供的ContentProvider基类。
2.ContentProvider是Android中的四大组件之一,所以需要在AndroidManifest.xml文件中进行注册。注册的时候,与注册Activity类似;
代码如下:
说明:
- 属性authorities是Uri标识,ContentProvide就是以这个Uri的形式对外提供数据,- ContentResolve也是根据该Uri进行访问操作该应用的数据的,可以理解为网站的域名;
- 属性exported指定是否对外暴露数据,只有为true时,其他应用才可以访问该应用的数据;
- 属性name指定ContentProvide实现类的类名;
网络存储
概述
通过网络的HTTP POST的方式发送数据,并存储到对应的服务中,在需要的时候,通过URL请求从服务获取数据。