Android基础_SharedPreferences

SharedPreferences是轻量级的数据持久化存储技术,使用XML key/value机制来存储数据

SharedPreferences实例获取方式:
前两中方式最终都会调用第三中方式,第三中相对更加灵活

SharedPreferences sp1 = mActivity.getPreferences(Context.MODE_PRIVATE);
SharedPreferences sp2 = PreferenceManager.getDefaultSharedPreferences(mActivity);
SharedPreferences sp3 = mActivity.getSharedPreferences(SP_FILE_NAME, Context.MODE_PRIVATE);

第一中方式Activity内部:使用当前Activity类名来命名SP文件名,
Activity:

    public SharedPreferences getPreferences(int mode) {
        return getSharedPreferences(getLocalClassName(), mode);
    }
    public String getLocalClassName() {
        final String pkg = getPackageName();
        final String cls = mComponent.getClassName();
        int packageLen = pkg.length();
        if (!cls.startsWith(pkg) || cls.length() <= packageLen
                || cls.charAt(packageLen) != '.') {
            return cls;
        }
        return cls.substring(packageLen+1);
    }

第二种:直接使用包名 + “_preferences”来命名

    public static SharedPreferences getDefaultSharedPreferences(Context context) {
        return context.getSharedPreferences(getDefaultSharedPreferencesName(context),
                getDefaultSharedPreferencesMode());
    }

    private static String getDefaultSharedPreferencesName(Context context) {
        return context.getPackageName() + "_preferences";
    }

    private static int getDefaultSharedPreferencesMode() {
        return Context.MODE_PRIVATE;
    }

第三中:上面两种方式最终都调用了第三个方法。

常用方法:

// 所有键值对
Map<String, ?> android.content.SharedPreferences.getAll()
// 是否包含这个键
boolean android.content.SharedPreferences.contains(String key)
// 注册内容修改监听,添加移除修改。clear收不到监听
void android.content.SharedPreferences.registerOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener)
// 类型安全的getType(,)方法

内部类Editor:

// 类型安全的putType(,)方法
// 移除某个key对应的键值对
Editor android.content.SharedPreferences.Editor.remove(String key)
// 清除所有键值对
Editor android.content.SharedPreferences.Editor.clear()
// 异步提交
void android.content.SharedPreferences.Editor.apply()
// 同步提交,阻塞线程,并且在写入完成之后返回是否操作成功
boolean android.content.SharedPreferences.Editor.commit()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值