Android五大存储方式——详解SharedPreferences

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36407875/article/details/78768365

前言:

SharedPreferences作为Android五大存储方式之一,其具有以下特点:

  1. 使用简单、快捷、方便。
  2. 只支持存储Java基础数据类型(Boolean、Int、Float、String、Long等)不支持自定义数据类型。
  3. 本质是一种Map,通过键值对的形式进行数据存储。
  4. 不支持查找功能。

使用方法:

存储数据:

 //两个参数,参数一:理解为文件名 参数二:文件权限模式 PRIVATE可读可写
 SharedPreferences sharedPreferences = getSharedPreferences("ZerGen", Context.MODE_PRIVATE);
 SharedPreferences.Editor editor = sharedPreferences.edit();
 editor.putString("name", "ZerGen");
 editor.putInt("age", 21);
 //提交保存数据
 editor.commit();

除了可以使用editor.commit()方法提交数据之外,还可以使用editor.apply()方法。
apply()是为了解决APP线程卡顿导致数据提交失败的情况,使用了apply()方法后,Android系统本身会在一个合适的时间提交保存数据。缺点在于没法确保什么时间提交。

权限模式:
MODE_PRIVATE:默认模式,允许被本应用程序访问,可读可写,写入内容覆盖。
MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
MODE_WORLD_READABLE:其他应用程序也拥有读出的权利。
MODE_WORLD_WRITEABLE:其他应用程序也拥有写入的权利。
另一种写法:

因为editor.putXXX()方法会返回一个Editor对象,所以Put数据的时候可以使用下面的方法:

 editor.putString("name", "ZerGen").putInt("age",21).commit();
错误写法,切记切记!!:
SharedPreferences sharedPreferences = getSharedPreferences("ZerGen", Context.MODE_PRIVATE);
sharedPreferences.edit().putString("name", "ZerGen");
sharedPreferences.edit().putInt("age", 21);
sharedPreferences.edit().commit();

如果按照这样的写法,数据是会存储失败。
因为sharedPreferences.edit()方法每次都会返回一个新的Editor对象,Editor实现类里边会有一个缓冲的Map,提交数据的时候会把这个缓冲的Map复制到内存中的Map,然后内存中的Map把数据存储到XML文件中,每一个新的Editor对象都有一个空的Map,所以最终无法存储成功。

取出数据:

SharedPreferences取出数据使用的是Key-Value的形式。

String name = sharedPreferences.getString("name",null);
int age = sharedPreferences.getInt("age",0);
Log.e("TAG", "name is :" + name + ",age is:" + age);

运行效果:

E/TAG: name is :ZerGen,age is:21

猜你喜欢

转载自blog.csdn.net/qq_36407875/article/details/78768365