android小球(二)——用户数据缓存详解SharedPreferences

发布于:2024-04-04 ⋅ 阅读:(146) ⋅ 点赞:(0)
SharedPreferences概述


SharedPreferences是Android平台上一个轻量级的存储辅助类,用来保存应用的一些常用配置,它提供了String,set,int,long,float,boolean六种数据类型。

使用SharedPreferences进行存储的数据是存放在一个XML文件中的,同时它的存储方式是是以key-value的形式,key对应着将要存储的数据的名称,value对应存储的值。

在第一篇的源码中,首先先声明静态变量
    private static final String PREF_NAME = "MyPrefs";
    private static final String SELECTED_OPTION_KEY = "selectedOption";
    private static final String PREF_MODE = "MyGravity";
    private static final String SELECTED_OPTION_KEY_GRAVITY = "selectedGravity";
    private static final String PREFS_REEKBAR = "reekbar";
    private static final String SEEK_BAR_SIZE_REEKBAR = "seekBarSize";
增加数据 

在小球实例中,用到了两种不同的 SharedPreferences写法

使用Activity类的getSharedPreferences方法获取到 SharedPreferences 对象,并且在其中指定文件名和该文件的访问权限。在使用该方法时,如果该名称的文件不存在就创建爱你它,如果存在就直接打开

其中的第一个参数是文件名,第二个参数是访问权限,我们平常都会将其访问权限设置为private类型,以保护数据不被外界所访问

// 保存SeekBar的当前大小到SharedPreferences
SharedPreferences.Editor editor = getSharedPreferences(PREFS_REEKBAR,MODE_PRIVATE).edit();
editor.putInt(SEEK_BAR_SIZE_REEKBAR, progress);
editor.apply();
// 保存用户选择到SharedPreferences
//获取SharedPreferences对象
SharedPreferences sharedPreferences = getSharedPreferences(PREF_MODE, Context.MODE_PRIVATE);
 //获取Editor对象的引用
SharedPreferences.Editor editor = sharedPreferences.edit();
 //将获取过来的值放入文件
editor.putString(SELECTED_OPTION_KEY_GRAVITY,selectedGravity);
editor.apply();

 editor类核心方法:

从editor的put方法可以看出SharedPreferences提供了string,set,int,long,float,boolean六种数据类型。(在小球实例中我们只用到了string和int)

 

存储数据的获取 

读取数据可以通过获取SharedPreferences对象,通过SharedPreferences 对象可以获取存储的数据值,第二个参数一般是个默认值,表示当获取数据的时候没有该key则返回一个默认值。

// 恢复用户最近的选择
SharedPreferences sharedPreferences = getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
String lastSelectedOption = sharedPreferences.getString(SELECTED_OPTION_KEY, "No selection made");
// 恢复用户最近的选择
SharedPreferences sharedPreferences1 = getSharedPreferences(PREF_MODE, Context.MODE_PRIVATE);
String lastSelectedOption1 = sharedPreferences1.getString(SELECTED_OPTION_KEY_GRAVITY, "No selection made");

 

 当然有输入输出就会有删除数据(但是在本次小球的例中没有用到)
//获取SharedPreferences对象
 SharedPreferences sharedPreferences = getSharedPreferences(PREF_MODE,MODE_PRIVATE);
 //获取Editor对象的引用
 SharedPreferences.Editor editor = sharedPreferences.edit();
 //将获取过来的值删除文件
 editor.remove(SELECTED_OPTION_KEY_GRAVITY);

 

修改数据

修改数据跟增加数据类似,覆盖原来的数据即修改数据。

SharedPreferences.Editor editor = getSharedPreferences(PREFS_REEKBAR, MODE_PRIVATE).edit();
editor.putInt(SEEK_BAR_SIZE_REEKBAR, progress);
editor.apply();
清除数据

我们可以通过Editor对象的clear方法来完成清楚数据

//获取SharedPreferences对象
 SharedPreferences sharedPreferences = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
 //获取Editor对象的引用
 SharedPreferences.Editor editor = sharedPreferences.edit();
 editor.clear();

清除以后xml文件并不会删除,但里面的数据都没了 

 

 


网站公告

今日签到

点亮在社区的每一天
去签到