无名之辈的Android之路android

Android日志:SharedPreferences

2022-06-01  本文已影响0人  搬码人

SharedPreferences简介

SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储Key-Value键值对信息,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改时通过Editor实现。

SharedPreferences可存储的数据

SharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQLite语句等操作,更加易用。但是SharedPreferences仅支持以下数据类型

但是无法进行条件查询,所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库等其他数据存储方式。

SharedPreferences的使用

SharedPreferences的使用其实非常简单方便,这里有几点需要注意:
1、SharedPreferences不能进行修改、写入操作,这部分需交给editor
2、SharedPreferences的初始化需要在onCreate之后,因为需要相应的context
3、SharedPreferences中一些列的get函数第二位参数defValue是获取数据失败时的默认值。

class MainActivity : AppCompatActivity() {
    lateinit var binding: ActivityMainBinding
    companion object{
        const val SP_NAME = "spname"
    }
    lateinit var preferences: SharedPreferences

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
        preferences = getSharedPreferences(SP_NAME,Context.MODE_PRIVATE)

        binding.Write.setOnClickListener {
            val editor = preferences.edit()
            editor.putString(SP_NAME,binding.edit.text.toString()).apply()
            if(editor.commit()){
                Toast.makeText(this,"保存数据成功",Toast.LENGTH_LONG).show()
            }

        }
        binding.Read.setOnClickListener {
            val result  = preferences.getString(SP_NAME,"未查询到数据")//defValue填充默认值
            Toast.makeText(this,"查询到数据:$result",Toast.LENGTH_LONG).show()
        }
    }
}
测试结果
测试结果

这里再补充一点关于SharedPreferences的监听的使用

OnSharedPreferenceChangeListener
这里以小编做的一个WorkerManager的小demo为例(不用在意demo细节,看SharedPreferences部分即可)

image.png image.png
上一篇下一篇

猜你喜欢

热点阅读