Android开发:使用SharedPreferences进行持久化存储
程序员文章站
2022-03-28 16:12:41
不同于文件的直接读写字符串的方式,SharedPreferences使用键值对存储数据。获取SharedPreferences对象想使用SharedPreferences存储数据,首先要获取SharedPreferences对象。有如下两种方式。Context类提供的getSharedPreferences()方法该方法有两个形参,分别是文件名和打开方式。Activity类提供的getSharedPreferences()方法该方法只有一个形参,就是打开方式,文件名默认是当前Activity的...
不同于文件的直接读写字符串的方式,SharedPreferences使用键值对存储数据。
获取SharedPreferences
对象
想使用SharedPreferences
存储数据,首先要获取SharedPreferences
对象。有如下两种方式。
-
Context类提供的
getSharedPreferences()
方法
该方法有两个形参,分别是文件名和打开方式。 -
Activity类提供的
getSharedPreferences()
方法
该方法只有一个形参,就是打开方式,文件名默认是当前Activity的名字。
在SharedPreferences
中存储数据
- 使用
SharedPreferences
对象的edit()方法得到一个SharedPreferences.Editor
对象。 - 添加数据:如下所示。这些函数接收两个参数,分别是键和内容。
editor.putString()
editor.putInt()
editor.putBoolean()
- 提交:调用
apply()
方法。
从SharedPreferences
中提取数据
- 获取一个
SharedPreferences
对象。 - 提取数据:如下所示。这些函数有两个形参,分别是键和默认值,即找不到传入的键对应的内容时就返回默认值。
editor.getString()
editor.getInt()
editor.getBoolean()
实例
该程序实现了使用SharedPreferences
进行数据存储和提取。
MainActivity.kt
package com.example.sharedpreferences
import android.content.Context
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn_saveData.setOnClickListener{
val editor = getSharedPreferences("data", Context.MODE_PRIVATE).edit()
editor.putString("name", "ZQ")
editor.putInt("age",22)
editor.putBoolean("isMarried", false)
editor.apply()
Toast.makeText(this, "数据保存成功", Toast.LENGTH_SHORT).show()
}
btn_restoreData.setOnClickListener{
val prefs = getSharedPreferences("data", Context.MODE_PRIVATE)
val name = prefs.getString("name", "")
val age = prefs.getInt("age", 0)
val isMarried = prefs.getBoolean("isMarried", false)
val tag = "MainActivity"
Log.d(tag, "name = $name")
Log.d(tag, "age = $age")
Log.d(tag, "married = $isMarried")
Toast.makeText(this, "成功打印日志", Toast.LENGTH_SHORT).show()
}
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btn_saveData"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SAVEDATA"/>
<Button
android:id="@+id/btn_restoreData"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RESTOREDATA"/>
</LinearLayout>
程序截图
使用Android studio自带的工具Device File Explorer查看对应目录下的data文件,发现实际上是一个xml,具体内容如下
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<boolean name="isMarried" value="false" />
<string name="name">ZQ</string>
<int name="age" value="22" />
</map>
本文地址:https://blog.csdn.net/weixin_42708161/article/details/107575029
下一篇: Python3实现两链表相加(详细注释)