前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android数据存储方式之SharedPreferences

Android数据存储方式之SharedPreferences

原创
作者头像
泰坦HW
修改2021-09-10 11:33:16
7.8K0
修改2021-09-10 11:33:16
举报
文章被收录于专栏:Titan笔记Titan笔记

不同于文件的存储方式,SharedPreferences提供了一种K-V键值对的数据存储方式。

也就是说,当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。

而且SharedPreferences还支持多种不同的数据类型存储,如果存储的数据类型是整型,那么读取出来的数据也是整型的;如果存储的数据是一个字符串,那么读取出来的数据仍然是字符串。

实际上,SharedPreferences将保存于APP数据目录下的xml文件中,也就是以XML的格式来保存的。显然,SharedPreferences只能保存不太敏感的明文,或者采取一些加密的手段来加密数据后再存储。

下面是SharedPreferences进行数据读写的示例:

布局文件

代码语言:html
复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="30dp"
    tools:context=".SharedPreferenceActivity">

    <EditText
        android:id="@+id/sharedPreferenceEditText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="30dp" />

    <Button
        android:id="@+id/sharedPreferenceWriteButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="写入数据" />

    <Button
        android:id="@+id/sharedPreferenceReadButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="读取数据" />
</LinearLayout>

Activity类文件

代码语言:java
复制
class SharedPreferenceActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_shared_preference)
        val editText = findViewById<EditText>(R.id.sharedPreferenceEditText)
        findViewById<Button>(R.id.sharedPreferenceWriteButton).setOnClickListener {
            val text = editText.text.toString()
            savePreferenceData("text", text)
        }
        findViewById<Button>(R.id.sharedPreferenceReadButton).setOnClickListener {
            val text = readPreferenceData("text")
            editText.setText(text)
        }
    }
    fun savePreferenceData(key: String, value: String) {
        val sharedPreference = getSharedPreferences("data", MODE_PRIVATE)
        sharedPreference.edit().apply {
            putString(key, value)
            apply()
        }
    }
    fun readPreferenceData(key: String): String? {
        val sharedPreference = getSharedPreferences("data", MODE_PRIVATE)
        return sharedPreference.getString(key, "")
    }
}

总结

可以看到,我们通过getSharedPreferences来获取一个 SharedPreferences 实例,用于读写;

在写操作中,通过调用 SharedPreferences 的 edit() 方法获取一个Editor实例,用于编辑SharedPreferences的键值(在SharedPreference的源码注释中这样说明:allowing you to modify the values in this SharedPreferences object.),

然后通过putXXX来保存XXX类型的数据,如putString,最后apply()来完成更改;

在读操作中,直接调用SharedPreferences的getXXX获取值数据即可。

本文为本人原创文章,同步发布于Titan笔记

Android数据存储方式之SharedPreferences - Titan笔记

https://www.titan6.cn/archives/344.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 布局文件
  • Activity类文件
  • 总结
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档