这是我参与「第四届青训营 」笔记创作活动的第7天
数据存储
数据存储是一个存储库持久地存储和管理数据的集合,其中不仅包括像仓库数据库,还有简单的存储类型,如简单的文件、电子邮件等。
数据库是由数据库管理系统(DBMS)管理的一系列字节。文件是由文件系统管理的一系列字节。因此,任何数据库或文件都是一系列字节,一旦存储,就称为数据存储。
存储方式
持久性的本地数据存储是Android中常见的能力,可以在应用被杀死的情况下,而保持数据不会被清除。
根据不同场景的诉求,选用不同的存储方式,常见存储方式如下:
SharedPreferences
Android平台的一个轻量级存储类,其本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。
SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。
实现步骤:
1、根据Context获取SharedPreferences对象
2、利用edit()方法获取Editor对象
3、通过Editor对象存储key-value键值对数据
4、通过commit()方法提交数据
文件存储
文件存储是 Android 中最基本的一种数据存储方式,Activity提供了openFileOutput()方法可以把数据输出到文件中。
它不对存储的内容进行任何的格式化处理,所有数据都是原封不动的保存到文件中。
文件中存放大量数据,如文本、图片、音频(一些简单的文本数据或二进制数据)等。
分为内部存储和外部存储。
内部存储
内部存储不是内存,若将文件存储于内部存储中,则文件默认只能被你的应用访问到,且一个应用所创建的所有文件都在和应用包名相同的目录下。当一个应用卸载之后,内部存储中的这些文件也被删除。
写入步骤:
1、获取文件输出流对象 FileOutputStream
2、使用FileOutputStream类的openFileOutput(String name, int mode)方法
3、调用FileOutputStream对象的write()方法写入文件
4、调用flush()方法(write()方法是写入缓冲区的)调用flush()方法将缓冲中的数据写入到文件,清空缓存
5、close()方法用于关闭FileOutputStream
外部存储
通过SD卡来操作,具体情况请自行在网上查找。
ContentProvider
实现了两个程序之间的数据交换,提供了一种多应用间数据共享的方式,实现了一组用于提供其他应用程序存取数据的标准方法的类。
当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据。虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式而不同。如:采用文件方式对外共享数据,需要进行文件操作读写数据;采用sharedpreferences共享数据,需要使用sharedpreferences API读写数据,而使用ContentProvider共享数据的好处是统一了数据访问方式。
ContentProvider 使用表格的形式管理数据,有四个核心操作方法,分别是:添加、删除、更新、查询(insert、delete、update、query)
#添加数据(Binder 线程)
public abstract Uri insert(Uri uri, ContentValues values);
#删除数据(Binder 线程)
public abstract int delete(Uri uri, String selection, String[] selectionArgs);
#更新数据(Binder 线程)
public abstract int update(Uri uri, ContentValues values, String selection, String[] selectionArgs);
#查询数据(Binder 线程)
public abstract Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder);
SQLite
SQL是轻量级关系型数据库,运算速度非常快,占用资源非常少,因此特别适合在移动设备使用。SQLite 不仅支持标准的 SQL 语法,还遵循数据库的 ACID 事务。SQLite 比一般的数据库要简单许多,不需要设置用户名和密码就可以使用。
可以进行增加(insert)、修改(update)、删除(delete)、查询(query)四种操作
具体使用方法请见:(23条消息) android使用SQLite_穷少年的博客-CSDN博客_android sqlite