Android日志:SharedPreferences

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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容