Re:从零开始的安卓数据存储学习生活(开篇)

简介: 生命不止,学习不息,相信数据库在掘友们那早已不是个陌生的字眼,但它的确在每个领域都绽放着自己与众不同的形式,而我们安卓开发也有着不一样的数据库存储方式,学习它就宛如迈进一个新世界大门,今天就让我们来了解这个异世界的奇妙之处。

正篇

正如486在异世界可以不断的重来回档,我们数据库也是有着还原备份的异曲同工之妙。 而说到数据库存储就需要有-数据持久化技术,下面解释一下这个专业名词:

数据持久化:指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或计算机关机的情况下,这些数据仍然不会丢失。保存在内存中数据处于瞬时状态(临时的),而保存在存储设备中的数据是处于持久状态的。

所以我们可以看出,持久化技术本质就是提供一个机制,可以让数据在瞬时状态和持久状态反复横跳。

安卓的三大数据持久化功能

而安卓就为我们提供了三种方式可以简单地去实现数据持久化功能:

  • 文件存储
  • SharedPreferences存储
  • 数据库存储

首先我们可以先简单了解一下这三种方法在安卓的使用,本章先把第一种方法简单说明一下

文件存储

顾名思义,即通过文件来保存数据,我们是使用安卓中Context类提供的openFileOutput()方法把数据存储到知道的文件中:

网络异常,图片无法展示
|

fun save(inputText: String) {
    try {
        val output = openFileOutput("data", Context.MODE_PRIVATE)
        val writer = BufferedWriter(OutputStreamWriter(output))
        writer.use { 
            it.write(inputText)
        }
    } catch (e: IOException) {
        e.printStackTrace()
    }
}

网络异常,图片无法展示
|

这个方法中有两个参数,第一个是我们需要的文件名,后则是文件的操作模式,主要是两个模式可选:MODE_APPEND, MODE_PRIVATE,默认是 MODE_PRIVATE模式,代表如果文件指定有同名文件,则写入内容直接覆写原文件内容,而MODE_APPEND则表示文件名存在时往该文件中追加内容,不存在就创建新文件,此外,该方法中获取的返回值FileOutputStream对象,该对象获取到就可以使用Java流把我们想存的数据写入文件。

网络异常,图片无法展示
|

除此以外,我们可以看到代码中还使用了一个use函数,这是Kotlin提供的一个内置扩展函数,能够保证在Lambda表达式中的代码全执行结束后自动将外层的流关闭,这就不再需要我们再编写一个finally语句来手动关闭流。

网络异常,图片无法展示
|

网络异常,图片无法展示
|

由于Kotlin语言没有异常检查机制(checked exception),故在Kotlin编写代码不会强制要求你添加异常捕获与抛出,因此即使不写try catch代码块一样可以在Kotlin中编译通过。(这涉及到Kotlin取消Checked Exception的原因,事关Java和Kotlin语言的一些争议,反正可以写try catch,需要就写)

总结

其实本文只是开了个头,仅仅就说明了文件存储的存入文件使用方法,还解释了一下数据存储的一些基本概念,后续随着学习的深入,我们会看到其实数据存储是非常好用的,毕竟我们是站在巨人肩膀上的,会使用即可,不用想那么多原理,只是有时候为了更好的使用,我们就会深入一下源码,去一窥前人的智慧。 还是一句话:

路漫漫其修远兮,吾将上下而求索

相关文章
|
2天前
|
XML 缓存 Android开发
Android开发,使用kotlin学习多媒体功能(详细)
Android开发,使用kotlin学习多媒体功能(详细)
105 0
|
2天前
|
存储 Java 数据库
Android数据存储:什么是Room Persistence Library?
Android数据存储:什么是Room Persistence Library?
57 0
|
2天前
|
存储 数据库连接 数据库
Android数据存储:解释SQLite数据库在Android中的使用。
Android数据存储:解释SQLite数据库在Android中的使用。
46 0
|
2天前
|
存储 安全 Linux
Android安全启动学习(四):device-mapper-verity (dm-verity)和哈希树
Android安全启动学习(四):device-mapper-verity (dm-verity)和哈希树
137 0
|
17小时前
|
存储 定位技术 开发工具
Android 开发前的设计,Android之内存泄漏调试学习与总结
Android 开发前的设计,Android之内存泄漏调试学习与总结
|
1天前
|
监控 Unix 应用服务中间件
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
|
1天前
|
Java Android开发 Dart
50家大厂面试万字精华总结android编程基础学习
50家大厂面试万字精华总结android编程基础学习
|
1天前
|
Java Android开发 消息中间件
flutter面试,字节大牛教你手撕Android学习
flutter面试,字节大牛教你手撕Android学习
|
2天前
|
网络协议 Shell Android开发
Android 深入学习ADB调试原理(1)
Android 深入学习ADB调试原理(1)
32 1
|
2天前
|
缓存 网络协议 编译器
针对Android系统工程师的C/C++学习目录
针对Android系统工程师的C/C++学习目录
6 0