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,實現序列化,關於序列化可以參考這篇文章。
序列化的作用如下

什么情況下需要序列化?

