Android Config通用类来记录信息

1.整体分析

1.1.源代码,可以直接Copy。

public class Config {
    private static int M = 1024 * 1024;
    private volatile static Config mConfig;
    private static LruCache<String, Object> mLruCache = new LruCache<>(1 * M);

    public Config(Context context){}

    public static Config init(Context context) {
        if (null == mConfig) {
            synchronized (Config.class) {
                if (null == mConfig) {
                    mConfig = new Config(context);
                }
            }
        }
        return mConfig;
    }

    public static Config getSingleInstance() {
        return mConfig;
    }

    //--- 基础 -----------------------------------------------------------------------------------

    public <T extends Serializable> void saveData(@NonNull String key, @NonNull T value) {
        mLruCache.put(key, value);
    }

    public <T extends Serializable> T getData(@NonNull String key, @Nullable T defaultValue) {
        T result = (T) mLruCache.get(key);
        if (result != null) {
            return result;
        }
        return defaultValue;
    }
    //--下面要看情况了,写一些要记录的信息
    //--方式如:private static Key_something="something";
    //--类型看情况,这里用string了。参数也看清况,这里用一个Integer吧
    //---------- publlic String saveSomething(Integer position){
    //                      savaData(something,position);
    //              }
    //--然后是获取了,看情况传不传参,getData第二个参数是默认的,看情况
    //-----------public Integer getSomething(){
    //                       return getData(Key_something,0)
    //              }
    
}
View Code

1.2.Config类的作用

  就是一个记录用户信息的一个类。

  比如某一页,用户看到了第几页第几个位置,可以通过这个方式存放到一个系统缓存中。

  比如是否是第一次打开APP,都可以用这个方式存放到系统缓存中

  而且这个类可以随意修改,看自己需要记录什么,只要按照例子写即可。

  这是一个泛型,所以什么数据都支持。


2.局部分析

2.1.看一下定义了哪些成员变量

  

  这里定义了一个M,数据量的大小,因为一般都是用M。1M=1024KB=1024*1024B

  这里用了一个关键字volatile

  

  然后LurCache是一个系统缓存类,相当于一个Map。

2.2.一个空的构造函数

  

  这个可以为空,也可以和一些第三方提供的缓存类挂钩。

2.3.初始化函数

  

  这里保证Config每次只能有一个实例,同时只能有一个线程执行,实现同步。

2.4.返回一个单例

  

  返回一个单例,保证了唯一性。

2.5.保存数据和获取数据,泛型实现。

   

  T 继承 Serializable,实现序列化,关于序列化可以参考这篇文章。

  序列化的作用如下

  

  什么情况下需要序列化?

  


既然选择了,便不顾风雨兼程。Just follow yourself.
原文地址:https://www.cnblogs.com/Jason-Jan/p/7904480.html