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,需要就写)

总结

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

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

相关文章
|
6月前
|
XML 缓存 Android开发
Android开发,使用kotlin学习多媒体功能(详细)
Android开发,使用kotlin学习多媒体功能(详细)
155 0
|
6月前
|
存储 Java 数据库
Android数据存储:什么是Room Persistence Library?
Android数据存储:什么是Room Persistence Library?
127 0
|
6月前
|
存储 数据库连接 数据库
Android数据存储:解释SQLite数据库在Android中的使用。
Android数据存储:解释SQLite数据库在Android中的使用。
84 0
|
2月前
|
Java Maven 开发工具
第一个安卓项目 | 中国象棋demo学习
本文是作者关于其第一个安卓项目——中国象棋demo的学习记录,展示了demo的运行结果、爬坑记录以及参考资料,包括解决Android Studio和maven相关问题的方法。
第一个安卓项目 | 中国象棋demo学习
|
1月前
|
Web App开发 编解码 视频直播
视频直播技术干货(十二):从入门到放弃,快速学习Android端直播技术
本文详细介绍了Android端直播技术的全貌,涵盖了从实时音视频采集、编码、传输到解码与播放的各个环节。文章还探讨了直播中音视频同步、编解码器选择、传输协议以及直播延迟优化等关键问题。希望本文能为你提供有关Andriod端直播技术的深入理解和实践指导。
48 0
|
6月前
|
监控 Unix 应用服务中间件
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
|
2月前
|
Android开发
Android学习 —— 测试init.rc中的条件触发的处理顺序
Android学习 —— 测试init.rc中的条件触发的处理顺序
|
3月前
|
搜索推荐 Android开发
学习AOSP安卓系统源代码,需要什么样的电脑?不同配置的电脑,其编译时间有多大差距?
本文分享了不同价位电脑配置对于编译AOSP安卓系统源代码的影响,提供了从6000元到更高价位的电脑配置实例,并比较了它们的编译时间,以供学习AOSP源代码时电脑配置选择的参考。
261 0
学习AOSP安卓系统源代码,需要什么样的电脑?不同配置的电脑,其编译时间有多大差距?
|
6月前
|
存储 定位技术 开发工具
Android 开发前的设计,Android之内存泄漏调试学习与总结
Android 开发前的设计,Android之内存泄漏调试学习与总结
|
6月前
|
Java Android开发 Dart
50家大厂面试万字精华总结android编程基础学习
50家大厂面试万字精华总结android编程基础学习
下一篇
无影云桌面