前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android中SharedPreferences使用小记

Android中SharedPreferences使用小记

作者头像
珲少
发布2018-08-15 16:04:29
8750
发布2018-08-15 16:04:29
举报
文章被收录于专栏:一“技”之长一“技”之长

Android中SharedPreferences使用小记

一、引言

        Android中使用SharedPreferences来进行简单数据的持久化处理,从名字就可以了解,其设计目的是为了保存应用程序的一些偏好设置,如音量,主题等信息。其与iOS开发中的NSUserDefault十分类似,并且,他们的实质都是采用XML格式的文件来存储数据。

二、SharedPreferences的简单应用

        对数据的持久化操作都会分为两个部分,一部分为存,另一部分为取。首先,开发者在Activity中使用如下方法可以获取获取创建一个SharedPreferences实例:

代码语言:javascript
复制
/*
这个方法需要传入两个参数,第一个参数为文件名,第二个参数为文件模式
*/
SharedPreferences sharedPreferences = getSharedPreferences("MyPreference",MODE_PRIVATE);

在getSharedPreference()方法中第一个参数决定这个存储文件的名字,在获取SharedPreferences实例时,如果系统创建过这个文件,则会返回本地的原文件,如果没有这个文件,则会进行创建。第二个参数决定这个文件的访问权限,可选参数如下:

代码语言:javascript
复制
Activity.MODE_PRIVATE,//默认操作模式,代表该文件是私有数据,只能被应用本身访问
Activity.MODE_WORLD_READABLE,//表示当前文件可以被其他应用读取,  
Activity.MODE_WORLD_WRITEABLE,//表示当前文件可以被其他应用写入;

有了SharedPreferences实例,在需要进行数据存储时,需要获取到SharedPreferences实例中的Editor对象,SharedPreferences类中有一个Editor的内部接口,其中提供了存储数据的相关方法,示例代码如下:

代码语言:javascript
复制
//获取Editor对象
SharedPreferences.Editor editor = sharedPreferences.edit();
//进行字符串存储
editor.putString("password","123456");
//提交存储内容
editor.commit();

Editor采用键值对的存储方式,可以存储的数据即常用方法如下:

代码语言:javascript
复制
public interface Editor {
        //进行字符串数据存储
        SharedPreferences.Editor putString(String var1, String var2);
        //进行字符Set存储
        SharedPreferences.Editor putStringSet(String var1, Set<String> var2);
        //进行Int值存储
        SharedPreferences.Editor putInt(String var1, int var2);
        //进行Long值存储
        SharedPreferences.Editor putLong(String var1, long var2);
        //进行Float值存储
        SharedPreferences.Editor putFloat(String var1, float var2);
        //进行布尔值存储
        SharedPreferences.Editor putBoolean(String var1, boolean var2);
        //删除一个键 与其对应的值
        SharedPreferences.Editor remove(String var1);
        //清空所有数据
        SharedPreferences.Editor clear();
        //提交存储
        boolean commit();
        //提交存储请求
        void apply();
    }

上面的方法中,有两点需要注意,首先clear()方法是将所有的键的值清空,并没有删除键,而remove是删除键和值。第二点,commit()方法和apply()方法都用于提交数据,不同的是,commit()方法会直接将数据同步到磁盘,返回值会告知开发者是否同步成功,而apply()方法只是将数据存储在内存,之后异步进行存盘操作,没有返回值,在开发中,如果要保证数据立马存入磁盘,要使用commit()方法。

        对存储的数据进行读取,可以直接调用SharedPreferences实例的如下方法:

代码语言:javascript
复制
public interface SharedPreferences {
    //获取所有键值映射表
    Map<String, ?> getAll();
    //通过键获取字符串值 第一个参数为键 第二个参数为此键不存在时使用的默认值
    String getString(String var1, String var2);
    //通过键获取字符串值集合 第一个参数为键 第二个参数为此键不存在时使用的默认值
    Set<String> getStringSet(String var1, Set<String> var2);
    //通过键获取整形值 第一个参数为键 第二个参数为此键不存在时使用的默认值
    int getInt(String var1, int var2);
    //通过键获取长整形值 第一个参数为键 第二个参数为此键不存在时使用的默认值
    long getLong(String var1, long var2);
    //通过键获取浮点值 第一个参数为键 第二个参数为此键不存在时使用的默认值
    float getFloat(String var1, float var2);
    //通过键获取布尔值 第一个参数为键 第二个参数为此键不存在时使用的默认值
    boolean getBoolean(String var1, boolean var2);
    //检查文件中是否包含某个键
    boolean contains(String var1);
    //注册监听
    void registerOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener var1);
    //取消注册监听
    void unregisterOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener var1);
    public interface OnSharedPreferenceChangeListener {
        void onSharedPreferenceChanged(SharedPreferences var1, String var2);
    }
}

注册监听方法可以提供给开发者一个回调接口,当SharedPreferences中数据改变时,会通知给开发者进行逻辑处理,示例代码如下:

代码语言:javascript
复制
//创建监听者
 final SharedPreferences.OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
            //需要重写这个方法 这个方法中会传入发生变化的键s
            @Override
            public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
                Log.d("**********",s);
            }
        };
//进行注册
sharedPreferences.registerOnSharedPreferenceChangeListener(listener);

温馨提示:可以在Android Device Monitor中查看创建的SharedPreferences文件,路径为data/data/APP包名/shared_prefs目录下,可以看到其为XML文件,如下图:

专注技术,热爱生活,交流技术,也做朋友。 ——珲少

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016/08/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Android中SharedPreferences使用小记
    • 一、引言
      • 二、SharedPreferences的简单应用
      相关产品与服务
      数据保险箱
      数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档