Sharedpreferences想必大家在項目中都經常會用到,但是如果需要在本地需要存儲比較多的數據,存儲一個集合的時,發現Sharedpreferences並不
是那么好使了。
分析

如果需要在本地種存儲上圖中的數據,顯而易見的是一個List中存儲多個對象,使用Sharedpreferences有局限性,
使用Sqlite個人感覺比較麻煩。
解決方案
推薦一款輕量級的Android緩存框架:ASimpleCache ,github開源項目(國人寫的哦) 地址
拷貝下官方說明:
ASimpleCache 是一個為android制定的 輕量級的 開源緩存框架。輕量到只有一個Java文件(由十幾個類精簡而來)。
1、它可以緩存什么東西?
普通的字符串、JsonObject、JsonArray、Bitmap、Drawable、序列化的java對象,和 byte數據。
特色主要是:
- 1:輕,輕到只有一個JAVA文件。
- 2:可配置,可以配置緩存路徑,緩存大小,緩存數量等。
- 3:可以設置緩存超時時間,緩存超時自動失效,並被刪除。
- 4:支持多進程。
3、它在android中可以用在哪些場景?
- 1、替換SharePreference當做配置文件
- 2、可以緩存網絡請求數據,比如oschina的android客戶端可以緩存http請求的新聞內容,緩存時間假設為1個小時,超時后自動失效,讓客戶端重新請求新的數據,減少客戶端流量,同時減少服務器並發量。
- 3、您來說...
4、如何使用 ASimpleCache?
以下有個小的demo,希望您能喜歡:
ACache mCache = ACache.get(this); mCache.put("test_key1", "test value"); mCache.put("test_key2", "test value", 10);//保存10秒,如果超過10秒去獲取這個key,將為null mCache.put("test_key3", "test value", 2 * ACache.TIME_DAY);//保存兩天,如果超過兩天去獲取這個key,將為null
獲取數據
ACache mCache = ACache.get(this); String value = mCache.getAsString("test_key1");
官方中並沒有提到怎么來存儲List,摸索了一下分享給大家:
代碼:
存入本地
- ACache aCache = ACache.get(mContext);
- //只能使用List的子類
- ArrayList<CarLocation> arrayList = new ArrayList();
- //注意:一定要序列化
- CarLocation carLocation = new CarLocation();
- carLocation.setTitle("測試");
- arrayList.add(carLocation);
- aCache.put("car", arrayList);
取出
- ACache aCache = ACache.get(activity);
- //使用getAsObject(),直接進行強轉
- ArrayList<CarLocation> carLocations = (ArrayList<CarLocation>) aCache.getAsObject("car");
使用ACache只需要一個類即可 :點擊打開鏈接
