持久化技术简介
数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或计算机关机 的情况下,这些数据仍然不会丢失。保存在内存中的数据是处于瞬时状态的,而保存在存储设 备中的数据是处于持久状态的。持久化技术提供了一种机制,可以让数据在瞬时状态和持久状态之间进行转换。
Android 系统中主要提供了3种方式用于简单地实现数据持久化功能:文件存储、 SharedPreferences 存储以及数据库存储。
文件存储
文件存储是Android 中最基本的数据存储方式,它不对存储的内容进行任何格式化处理,所有数据都是原封不动地保存到文件当中的,因而它比较适合存储一些简单的文本数据或二进制数据。
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val inputText = load() if (inputText.isNotEmpty()) { editText.setText(inputText) editText.setSelection(inputText.length) Toast.makeText(this, "Restoring succeeded", Toast.LENGTH_SHORT).show() } } // 重写了onDestroy()方法,这样就可以保证在Activity 销毁之前一定会调用这个方法。 override fun onDestroy() { super.onDestroy() val inputText = editText.text.toString() // 获取了EditText 中输入的内容 save(inputText) } private fun save(inputText: String) { try { // Context类中提供了一个openFileOutput()方法,可以用于将数据存储到指定的文件中。 // 这个方法接收两个参数:第一个参数是文件名,在文件创建的时候使用,注意这里指定的文件名不可以包含路径,因为所有的文件都默认存储到/data/data/<package name>/files/ 目录下; // 第二个参数是文件的操作模式,主要有MODE_PRIVATE(覆盖)和MODE_APPEND(追加)两种模式可选,默认是MODE_PRIVATE // openFileOutput()方法返回的是一个FileOutputStream对象,得到这个对象之后就可以使用Java 流的方式将数据写入文件中了。 val output = openFileOutput("data", Context.MODE_PRIVATE) val writer = BufferedWriter(OutputStreamWriter(output)) writer.use { it.write(inputText) } } catch (e: IOException) { e.printStackTrace() } } private fun load(): String { val content = StringBuilder() try { //Context类中还提供了一个openFileInput()方法,用于从文件中读取数据。 val input = openFileInput("data") val reader = BufferedReader(InputStreamReader(input)) reader.use { reader.forEachLine { content.append(it) } } } catch (e: IOException) { e.printStackTrace() } return content.toString() } }
SharedPreferences存储
不同于文件的存储方式,SharedPreferences 是使用键值对的方式来存储数据的。当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。而且SharedPreferences 还支持多种不同的数据类型存储
标签:文件,存储,持久,val,技术,inputText,Android,数据 From: https://www.cnblogs.com/ooo0/p/17058109.html