数据持久化之SharedPreferences存储

为什么要进行数据持久化?

保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的。当电脑手机或电脑关机的情况下内存中的瞬时数据就会丢失,比如用户刚填好的信息,刷新一下就没了!!!这是一件很影响用户体验的事情。这就需要用到数据持久化技术了。

数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍不会丢失。

Android系统中提供三种数据持久化技术:文件存储、SharedPreferences存储以及数据库存储。下面我将介绍SharedPreferences存储。

SharedPreferences存储

SharedPreferences存储使用键值对的方式。当保存一条数据时,需要给这条数据提供一个对应的键,读取数据时通过这个键把对应的数值取出来。

一、将数据存储到SharedPreferences中

首先需要获取到SharedPreferences对象

  1. Context类中的getSharedPreferences()方法

    有两个参数,一个参数用于指定SharedPreferences文件的名字,若指定文件不存在则创建一个;第二个参数用于指定操作模式,目前只剩默认模式MODE_PRIVATE,可直接传入0。

  2. Activity类中的getPreferences()方法

    和getSharedPreferences()方法类似,但使用这个方法时会自动将当前活动的类名作为SharedPreferences的文件名,因此它只接收一个操作模式参数。

  3. PreferenceManager类中的getDefaultSharedPreferences()方法

    这是一个静态方法,它接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件。

获取到对象后,向SharedPreferences文件中存储数据

  1. 调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象

    SharedPreferences.Editor editor = getSharedPreferences("userData",MODE_PRIVATE).edit();
    
  2. 向SharedPreferences.Editor对象中添加数据,用putBoolean()方法添加布尔型数据,用putString()方法添加字符串,以此类推

    editor.putString("token_type",oauthResponse.getToken_type());
    editor.putBoolean("isStore",true);
    
  3. 调用apply()方法将添加到数据提交,从而完成数据存储

    editor.apply();
    

从SharedPreferences中读取数据

与存储的put方法对应的有一系列的get方法,get方法接收两个参数,一个参数是键,传入存储数据时使用的键就可以得到相应的值;一个是默认值,表示当传入的键找不到对应的值时会以什么样的默认值返回。

pref=this.getSharedPreferences("userData", Activity.MODE_PRIVATE);
isStore = pref.getBoolean("isStore",false);

通过获取对象、存储数据、读取数据的操作,我们可以实现账号登录,缓存用户数据的功能。通过isStore判断用户是否登录过,有记录则直接登录,没有记录则展示登录界面,供用户填写登录信息,登录后将用户数据存下,以便下次直接登录。
在其他需要缓存少量信息的地方,也可以这么使用!这个方法真是太简单好用了!不过,数据量大的时候,可就得借助文件存储或数据库存储了。目前还未涉及,等学到了再更新~

你可能感兴趣的:(数据持久化之SharedPreferences存储)