数据存储全方案之SharedPreferences

本篇文章仅用作记录,通过郭霖大神的文章改编

SharedPreferences存储

介绍

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

将数据存储到SharedPreferences

想要使用其来存储数据,那么首先你需要获取到一个SharedPreferences 对象,在Android中提供3中方法用于得到SharedPreferences 对象。

getSharedPreferences()

Context类中的getSharedPreferences()方法

此方法接受两个参数,第一个参数用于指定SharedPreferences文件的名称,如果指定的文件不存在则会创建一个,sharedPreferences文件都是存放在/data/data/<package name>/shared_prefs/目录下。第二个参数用于指定操作模式,目前只有MODE_PRIVATE一种模式可以选择,其他模式都已被Android废弃,表示只有当前的应用程序才可以对这个文件进行读写。

getPreferences()方法

Activity类中的getPreferences()方法

这个方法和Context中的getSharedPreferences()方法很相似,不过它只接受一个操作模式的参数,因为使用这个方法时会自动将当前活动的雷鸣作为sharedPreferences的文件名。

getDefaultSharedPreferences()方法[强烈推荐]

PreferenceManager类中的gettDefaultSharedPreferences()方法

这个是一个静态方法,它接受一个Context参数,并且自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件,得到了SharedPreferences对象之后,就可以开始向SharedPreferences文件中存储数据了,主要分为以下三个步骤:

  1. 调用SharedPreferences对象的edit()方法来获取一个SharedPreferences。Editor对象
  2. 向SharedPreferences.Editor对象中添加数据,使用put<数据类型>()方法。
  3. 调用apply()方法进行提交,本方法和commit()方法有所不同,前者进行异步提交并且不返回值,后者是同步提交成功则返回true,失败则返回false。
private void setRemeber(){
        SharedPreferences.Editor editor = getSharedPreferences("pwd",MODE_PRIVATE).edit();
        if (helper.getCb_remeberPassWord().isChecked()){
            editor.putBoolean("isRemeber",true);
        }else{
            editor.clear();
        }
        editor.apply();
    }

从SharedPreferences中读取数据

从SharedPreferences文件中读取数据更加的简单。SharedPreferences对象中提供了一系列的get方法,用于对存储的数据进行读取,每种get方法都对应了SharedPreferences.Editor中的一种put方法。

 private void initEditData (){
        SharedPreferences sharedPreferences = getSharedPreferences("pwd",MODE_PRIVATE);

        boolean isRemeber =  sharedPreferences.getBoolean("isRemeber",false);
        if (isRemeber){
            SPUtils spUtils = new SPUtils(getApplicationContext());
            String sp_UserName = spUtils.getUserName();
            String sp_Pwd = spUtils.getPwd();
            helper.getEt_userName().setText(sp_UserName);
            helper.getEt_passWord().setText(sp_Pwd);
        }
    }

本文版权归属:极束の梦想

转载文章时,请保留本文的版权内容。

作者:Seale

同时也欢迎各位大大交换友链。


本作品采用知识共享署名 4.0 国际许可协议进行许可。

如果可以的话,请给我钱请给我点赞赏,小小心意即可!

Last modification:April 12, 2019
If you think my article is useful to you, please feel free to appreciate