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) // } }
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.