Android日志:SharedPreferences

作者: 搬码人 | 来源:发表于2022-06-01 19:52 被阅读0次

    SharedPreferences简介

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

    SharedPreferences可存储的数据

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

    • boolean
    • int
    • float
    • long
    • String

    但是无法进行条件查询,所以不论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

    相关文章

      网友评论

        本文标题:Android日志:SharedPreferences

        本文链接:https://www.haomeiwen.com/subject/gmsgprtx.html