- 本篇参考资料《第一行代码 第三版》 2020.4月出版
- 本篇文章只是本人看书的理解和整理的笔记,更完整的内容还在书上
- 尊重原作者 请购买正版图书
第六章涉及到四大组件中的广播接收者和广播发送者,目前使用率较低,先看第七章的SQLite和其他持久化存储吧,这个比较重要。
关于持久化存储三种方式,在实际项目操作中肯定是需要进行封装的,一般会采用单例模式。这部分只简单理解基本的使用方法,毕竟再高级的封装都是从基础开始的。学习完毕后可以自己尝试进行封装或者去参考比较成熟的封装方法。总之,最适合自己的就是最好的。
一 文件操作
最简单的文件读写,这里保存一个输入框的字符串,在启动activity的时候读取并填写到输入框
fun save(input: String) {
val output = openFileOutput("data", Context.MODE_PRIVATE)
val writer = BufferedWriter(OutputStreamWriter(output))
writer.use {
it.write(input)
}
}
fun read() {
val content = StringBuilder()
val input = openFileInput("data")
val reader = BufferedReader(InputStreamReader(input))
reader.use {
it.forEachLine {
content.append(it)
}
}
editText.setText(content.toString())
}
这只是最简单的APP内部文件操作例子,我这里想补充一下,首先Android上的文件读写分为两大类型:APP内部和APP外部(SD卡)
APP内部文件读写
不需要请求权限,直接可以进行操作,内部读写分为保存目录和缓存目录
保存目录:data/data/包名/files
这里可以保存一些重要文件,app卸载时会清空
缓存目录:data/data/包名/cache
这里可以临时缓存一些文件,内存不足时系统会清理,app卸载时会清空
APP外部文件读写
需要请求SD卡访问权限。这里主要是app外部的文件操作,比如SD卡,访问系统相册这些操作。
在使用前需要判断是否有SD卡可以读写。比如有些设备是外置SD卡,有时候有,有时候没有。这些都是需要注意的问题。
二 SharedPreferebces单个字段存储
简单用法:
saveBtn.setOnClickListener {
val sp = getSharedPreferences("data", Context.MODE_PRIVATE)
val editor = sp.edit()
editor.putString("name", "Tom")
editor.putInt("age", 18)
editor.putBoolean("married", false)
editor.apply()
Log.d(TAG, "保存成功")
}
readBtn.setOnClickListener {
val sp = getSharedPreferences("data", Context.MODE_PRIVATE)
Log.d(TAG, sp.getString("name", ""))
Log.d(TAG, sp.getInt("age", 0).toString())
Log.d(TAG, sp.getBoolean("married", false).toString())
}
注意点1:保存列表时,只能保存Set类型,Set的特点是无序
注意点2:保存对象object该怎么操作,比如数据实体类?(思路:转换为JSON字符串再保存)
注意点3:在项目中使用最好采用单例模式进行封装
三 SQLite数据库
注意:书上和以下内容都只是SQLite数据库的最基本的用法,实际项目使用中,肯定需要进行封装的!!但是要进行封装也得从基础开始,继续吧。
实际使用过程中,应该是直接传入数据实体类对象到封装的方法中进行保存。当然也会有查询数据转化为数据实体类等问题。
封装参考:https://blog.csdn.net/tywfeng/article/details/86653875
网友评论