面试题-请介绍下Android中的数据存储方式

Android程序员面试宝典

1 使用SharedPreferences存储数据
适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型、基本类型的值。
比如应用程序的各种配置信息(如是否打开音效等),解锁口 令密码等

核心原理:保存基于XML文件存储的key-value键值对数据,通常用来存储一些简单的配置信息。
SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过SharedPreferences.edit()获取的内部接口Editor对象实现

实现SharedPreferences存储的步骤如下:

一、根据Context获取SharedPreferences对象

二、利用edit()方法获取Editor对象。

三、通过Editor对象存储key-value键值对数据。

四、通过commit()方法提交数据。

Editor有如下主要重要方法:
SharedPreferences.Editor clear():清空SharedPreferences里所有数据
SharedPreferences.Editor putXxx(String key , xxx value): 向SharedPreferences存入指定key对应的数据,其中xxx 可以是boolean,float,int等各种基本类型据
SharedPreferences.Editor remove(): 删除SharedPreferences中指定key对应的数据项
boolean commit(): 当Editor编辑完成后,使用该方法提交修改

2 文件存储数据

核心原理: Context提供了两个方法来打开数据文件里的文件IO流:
FileInputStream openFileInput(String name);

《面试题-请介绍下Android中的数据存储方式》

FileOutputStream openFileOutput(String name , int mode)

《面试题-请介绍下Android中的数据存储方式》

注意:创建的文件保存在/data/data/<package name>/files目录,如: /data/data/cn.tony.app/files/message.txt

3 SQLite数据库存储数据

什么是SQLite???

SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。

SQLite基本使用!!!

实际开发中,为了能够更好的管理和维护数据库,我们会封装一个继承自SQLiteOpenHelper类的数据库操作类,然后以这个类为基础,再封装我们的业务逻辑方法

针对SQLiteOpenHelper进行阐述:

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

《面试题-请介绍下Android中的数据存储方式》

通过SQLiteDatabase对象操作数据库,进行curd

实例化sqliteDBHelper并获取一个SQLiteDatabase对象,作为整个应用的数据库实例;
在增删改信息时,我们采用了事务处理,确保数据完整性;最后要注意释放数据库资源db.close(),这一个步骤在我们整个应用关闭时执行

查询:

《面试题-请介绍下Android中的数据存储方式》

通过SQL语句进行查询

《面试题-请介绍下Android中的数据存储方式》

插入操作:

《面试题-请介绍下Android中的数据存储方式》

更新操作:

《面试题-请介绍下Android中的数据存储方式》

删除操作:

《面试题-请介绍下Android中的数据存储方式》

通过SQL语句执行curd操作:

《面试题-请介绍下Android中的数据存储方式》

注意:getWritableDatabase()和getReadableDatabase()方法区别

Android使用getWritableDatabase()和getReadableDatabase()方法都可以获取一个用于操作数据库的SQLiteDatabase实例。

(getReadableDatabase()方法中会调用getWritableDatabase()方法) 其中getWritableDatabase() 方法以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,倘若使用的是getWritableDatabase() 方法就会出错。

getReadableDatabase()方法则是先以读写方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库。如果该问题成功解决,则只读数据库对象就会关闭,然后返回一个可读写的数据库对象。

4 使用ContentProvider存储数据

什么是ContentProvider????

ContentProvider:为存储和获取数据提供统一的接口。可以在不同的应用程序之间共享数据。
并且此种方式忽略了底层的数据存储实现,ContentProvider提供了一种统一的通过Uri实现数据操作的方式

其步骤为:

  1. 在当前应用程序中定义一个ContentProvider。
  2. 在当前应用程序的AndroidManifest.xml中注册此ContentProvider
  3. 其他应用程序通过ContentResolver和Uri来获取此ContentProvider的数据。
    ContentResolver提供了insert(), delete(), query()和update()之类的方法。用于实现对ContentProvider中数据的存取操作

5 网络存储数据

Android提供了通过网络来实现数据的存储和获取的方法

如下代码片段:

《面试题-请介绍下Android中的数据存储方式》

阅读原文

  • 欢迎关注微信公众号、长期为您推荐优秀博文、开源项目、视频

  • 微信公众号名称:Android干货程序员

  • 《面试题-请介绍下Android中的数据存储方式》
    原文作者:马伟奇
    原文地址: https://www.jianshu.com/p/5223a77a2a32
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞