SharedPreferences模块封装

2020-03-10  本文已影响0人  KyneMaster

前言

SharedPreferences 轻量级缓存使用众所周知。但是使用极其繁琐,那么现在来封装优化一下。

目录

目录.jpg

基本原理

SharedPreferences是以XML<->Map键值对的形式保存在/data/data/包名/shared_prefs文件夹下。
注意:

进一步了解自行查看源码。

基本使用

     SharedPreferences sharedPreferences= getSharedPreferences("user",Context.MODE_PRIVATE);
     SharedPreferences.Editor editor = sharedPreferences.edit();
     editor.putString("username", username);             
     editor.commit();

问题定义

一看就不是自己人,用它给我干活不放心啊,给他包装下~

思路与实现

  1. SharedPreferences
    先看下SharedPreferences, 他本身就是interface,一看就是采用的面向接口编程,好像在告诉我,我是干这个的,你别管我咋干的,你需要用就是了~

  2. 定义执行部分

  1. 理想使用效果
  1. 业务功能和公用功能分离
  1. 执行和使用结合
  1. 缓存管理类
    大功告成?还差一步!通过管理类实现缓存类的管理,并在app启动时单例实例化,防止频繁获取缓存对象,导致内容问题。
    public class PreferenceManager extends BasePreferenceManager {
    
        private static volatile PreferenceManager instance;
        private IUserPreferences userPreferences;
    
        public static PreferenceManager getInstance() {
            if (instance == null) {
                synchronized (PreferenceManager.class) {
                    if (instance == null) {
                        instance = new PreferenceManager();
                    }
                }
            }
            return instance;
        }
    
        public IUserPreferences getUserPreferences() {
            return userPreferences;
        }
    
        private void setUserPreferences(IUserPreferences userPreferences) {
            this.userPreferences = userPreferences;
        }
    
        public void initPreferences(Context context) {
            PreferenceManager.getInstance().setUserPreferences(new UserPreferences(context));
        }
    }
    

使用效果

  1. 在Application类中初始化
    PreferenceManager.getInstance().initPreferences(this);
    
  2. 正常使用
    IUserPreferences userPreferences = PreferenceManager.getInstance().getUserPreferences();
    //保存
    userPreferences.saveUserName("Kyne");
    //获取
    String name = userPreferences.getUserName();
    
    
    舒坦~~

类图

忘了咋画了 O——O~!

代码

代码

上一篇 下一篇

猜你喜欢

热点阅读