美文网首页android开发杂识天花板谈Android开发安卓资源收集
面试题-请介绍下Android中的数据存储方式

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

作者: 小怪兽打葫芦娃 | 来源:发表于2017-07-12 22:52 被阅读691次

    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);

    FileOutputStream openFileOutput(String name , int mode)

    注意:创建的文件保存在/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方法。

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

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

    查询:

    通过SQL语句进行查询

    插入操作:

    更新操作:

    删除操作:

    通过SQL语句执行curd操作:

    注意: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中的数据存储方式

        本文链接:https://www.haomeiwen.com/subject/qhyihxtx.html