搜索
您的当前位置:首页正文

Android的SharedPreference基本知识点总结

来源:吉趣旅游网

1. SharedPreference

SharedPreference是Android设置的一个轻量级的数据存储的方式。它可以将数据以键值对的形式存放到文件中,在你需要的时候再取出来。

  • 用键值对的形式存储数据,文件内容是这样的(后面代码生成的文件)。
  • 默认的存储路径是:data/data/应用程序的包名/shared_prefs,存储文件的格式是xml格式。
  • 存储路径可以手动修改。
  • 一般用于存储重要内容和做一些判断,比如说判断用户是否是第一次打开app。

2. 基本用法

2.1 获取sharedpreference实例

有三种获取实例的方法

2.2 保存和读取

  1. 保存需要用到SharedPreference.Editor,但是用法很简单,保存用键值对的形式保存。

    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString("name", "SharedPreferenceDemo"); // 第一个参数是key,第二个参数是value
    editor.apply(); // 异步提交,是void方法应用之后就会存储
    //editor.commit(); // 阻塞式提交,是boolean方法,会返回是否提交成功
    

    注意提交的方式有apply和commit两种,apply是异步提交,用工作线程;commit是阻塞提交,用当前线程。

    可以保存的数据类型如下图,不能保存序列化类型。

  2. 读取不需要用到Editor,可以直接读取。

    String name = sharedPreferences.getString("name", "default");
    // 第一个参数是读取的key值,第二个参数是读取失败时的默认值。
    

3. 特点和总结

其实sharedPreference的性能效率并不高,总结之后有如下几点:

  • 读取的速度较慢,当我们获取sharedpreference的实例时,实际上已经做完了对整个文件的读取,可想而知,如果文件容量过大,那么相应的读取时间也会变得更长,如果使用不注意再加上用主线程加载的话,很容易就会导致应用卡住。
  • 存储的速度较慢,无论是使用改动一个条目还是多个条目,文件都会被整个覆盖,这样当然就慢了。
  • 占内存,之前也说了,获取实例的时候,会对整个文件进行读取,那么这些读取后的文件自然会占内存,如果不注意的话容易引发各种各样的缺内存事故。

所以对于SharedPreference,其实用起来很简单:

  1. 不要存放过长的key和value,那些奇奇怪怪的json串就别存了。
  2. 不用分成多个文件存储,因为实际上他们在读取之后都是只有程序结束后才会销毁回收内存。
  3. 如果要修改内容,尽量全部修改完再一起提交。

我们的项目一般不用sharedPreference,而是用开源库MMKV来代替它,所以本文也就仅记录一个demo。

参考材料

因篇幅问题不能全部显示,请点此查看更多更全内容

Top