参考:

一.Android中提供哪些数据持久存储的方法?

  • 技术点:数据持久化
  • 思路:分条解释每种数据持久存储的特点

    • File 文件存储:写入和读取文件的方法和 Java中实现I/O的程序一样。
    • SharedPreferences存储:一种轻型的数据存储方式,常用来存储一些简单的配置信息,本质是基于XML文件存储key-value键值对数据。
    • SQLite数据库存储:一款轻量级的关系型数据库,它的运算速度非常快,占用资源很少,在存储大量复杂的关系型数据的时可以使用。
    • ContentProvider:四大组件之一,用于数据的存储和共享,不仅可以让不同应用程序之间进行数据共享,还可以选择只对哪一部分数据进行共享,可保证程序中的隐私数据不会有泄漏风险。
    • 网络应该也算,存储到服务器。

      二.Java中的I/O流读写怎么做?

  • 技术点:数据持久化(文件存储)

  • 思路:大致介绍核心类和核心方法
  • 和 Java中实现I/O的程序是一样的,Context类中提供了openFileInput()和openFileOutput()方法来打开数据文件里的文件IO流;

    三.SharePreferences适用情形?使用中需要注意什么?

  • 技术点:数据持久化(SharePreferences存储)

  • SharePreferences是一种轻型的数据存储方式,适用于存储一些简单的配置信息,如int、string、boolean、float和long。由于系统对SharedPreferences的读/写有一定的缓存策略,即在内存中有一份该文件的缓存,因此在多进程模式下,其读/写会变得不可靠,甚至丢失数据。

    四.了解SQLite中的事务处理吗?是如何做的?

  • 略(不熟悉,后续有精力再研究)

    五.使用SQLite做批量操作有什么好的方法吗?

  • 略(不熟悉,后续有精力再研究)

    六.如果现在要删除SQLite中表的一个字段如何做?

  • 技术点:数据持久化(SQLite)

  • 参考回答:SQLite数据库只允许增加表字段而不允许修改和删除表字段,只能采取复制表思想,即创建一个新表保留原表想要的字段、再将原表删除;

    七.使用SQLite时会有哪些优化操作?

  • 技术点:数据持久化(SQLite)

  • 思路:列举可优化点
  • 参考回答:
    • 使用事务做批量操作:具体操作见上
    • 及时关闭Cursor,避免内存泄漏
    • 耗时操作异步化:数据库的操作属于本地IO,通常比较耗时,建议将这些耗时操作放入异步线程中处理
    • ContentValues的容量调整:ContentValues内部采用HashMap来存储Key-Value数据,ContentValues初始容量为8,扩容时翻倍。因此建议对ContentValues填入的内容进行估量,设置合理的初始化容量,减少不必要的内部扩容操作
    • 使用索引加快检索速度:对于查询操作量级较大、业务对要求查询要求较高的推荐使用索引