Android23.2-- 数据存储与访问——SharedPreferences

# Android23.2-- 数据存储与访问——SharedPreferences

标签: Android

创建时间:2016-9-24 09:56:47
更新时间:2018-1-6 17:20:39


undefined

不同于文件的存储方式,SharedPreferences是使用键值对的方式来存储数据的。

也就是说当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。而且SharedPreferences还支持多种不同的数据类型存储,如果存储的数据类型是整型,那么读取出来的数据也是整型的,存储的数据是一个字符串,读取出来的数据仍然是字符串。

SharedPreferences相对于文件的存储方式,使用起来会更加方便。

数据存储 #

要想使用SharedPreferences来存储数据,先需要获取SharedPreferences对象。有三种方式获取SharedPreferences对象:

1、Context类中的getSharedPreferences()方法

方法原型:

public SharedPreferences getSharedPreferences(String name, int mode) {}

第一个参数 name 为SharedPreferences文件的名称,默认存储在/data/data/<packagename>/share_prefs/目录下的。

第二个参数为操作模式,有MODE_PRIVATEMODE_MULTI_PROCESSMODE_PRIVATE仍然是默认的操作模式,和直接传入0效果是相同的,表示只有当前的应用程序才可以对这个SharedPreferences文件进行读写。

MODE_MULTI_PROCESS则一般是用于会有多个进程中对同一个SharedPreferences文件进行读写的情况。

类似地,MODE_WORLD_READABLEMODE_WORLD_WRITEABLE这两种模式已在Android4.2版本中被废弃。

在Activity里,我们直接就能使用getSharedPreferences()方法。

2、Activity类中的getPreferences()方法
方法原型:

public SharedPreferences getPreferences(int mode) {}

该方法只有一个参数mode。该方法会自动将当前Activity的类名作为SharedPreferences的文件名。

3、PreferenceManager类中的getDefaultSharedPreferences()方法
该方法需要导入android.preference.PreferenceManager类。这是一个静态方法。方法原型:

public static SharedPreferences getDefaultSharedPreferences(Context context) {}

该方法只接受一个Context对象,会自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件。

调用示例:

SharedPreferences sf = PreferenceManager.getDefaultSharedPreferences(this);

获取到SharedPreferences对象后,我们就可以开始向SharedPreferences文件中存储数据了。操作流程:

  • 调用SharedPreferences对象的edit()方法获取一个SharedPreferences.Editor对象;
  • SharedPreferences.Editor对象中添加数据;
  • 调用commit()方法将添加的数据提交,从而完成数据存储操作。

示例:

SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE)
	.edit();
editor.putString("name","yujc");
editor.putInt("age",25);
editor.commit();

数据读取 #

数据读取相比存储更加简单。只要获取了SharedPreferences对象,就可以使用SharedPreferences对象中提供的一系列的get方法获取数据:

  • getBoolean()
  • getInt()
  • getString()
  • ...

这些get方法都接收两个参数,第一个参数是键,传入存储数据时使用的键就可以得到相应的值了,第二个参数是默认值,即表示当传入的键找不到对应的值时,会以什么样的默认值进行返回。

示例:

SharedPreferences sf = getSharedPreferences("data",MODE_PRIVATE);
String name = sf.getString("name", "");//默认值空字符串
int gae = sf.getInt("age", 0);
Build by Loppo 0.6.6