2323package com .gcssloop .diycode .utils ;
2424
2525import android .content .Context ;
26+ import android .support .annotation .NonNull ;
2627import android .util .LruCache ;
2728
2829import com .gcssloop .diycode_sdk .api .news .bean .New ;
4243 * 数据缓存工具
4344 */
4445public class DataCache {
45-
46- ACache cache ;
47- LruCache <String , String > mLruCache ;
46+ private static int M = 1024 * 1024 ;
47+ ACache mDiskCache ;
48+ LruCache <String , Object > mLruCache ;
4849
4950 public DataCache (Context context ) {
50- cache = ACache .get (new File (FileUtil .getExternalCacheDir (context .getApplicationContext (), "diy-data" )));
51- mLruCache = new LruCache <>(3 * 1024 );
51+ mDiskCache = ACache .get (new File (FileUtil .getExternalCacheDir (context .getApplicationContext (), "diy-data" )));
52+ mLruCache = new LruCache <>(5 * M );
5253 }
5354
5455 public <T extends Serializable > void saveListData (String key , List <T > data ) {
5556 ArrayList <T > datas = (ArrayList <T >) data ;
56- cache .put (key , datas , ACache .TIME_WEEK ); // 数据缓存时间为 1 周
57+ mLruCache .put (key , datas );
58+ mDiskCache .put (key , datas , ACache .TIME_WEEK ); // 数据缓存时间为 1 周
5759 }
5860
59- public <T extends Serializable > void saveData (String key , T data ) {
60- cache .put (key , data , ACache .TIME_WEEK ); // 数据缓存时间为 1 周
61+ public <T extends Serializable > void saveData (@ NonNull String key , @ NonNull T data ) {
62+ mLruCache .put (key , data );
63+ mDiskCache .put (key , data , ACache .TIME_WEEK ); // 数据缓存时间为 1 周
6164 }
6265
63- public <T extends Serializable > T getData (String key ) {
64- return (T ) cache .getAsObject (key );
66+ public <T extends Serializable > T getData (@ NonNull String key ) {
67+ T result = (T ) mLruCache .get (key );
68+ if (result == null ) {
69+ result = (T ) mDiskCache .getAsObject (key );
70+ if (result != null ) {
71+ mLruCache .put (key , result );
72+ }
73+ }
74+ return result ;
6575 }
6676
6777 public void removeDate (String key ) {
68- cache .remove (key );
78+ mDiskCache .remove (key );
6979 }
7080
7181 public void saveTopicContent (TopicContent content ) {
@@ -75,7 +85,6 @@ public void saveTopicContent(TopicContent content) {
7585 preview = preview .substring (0 , 100 );
7686 }
7787 saveData ("topic_content_preview" + content .getId (), preview );
78- mLruCache .put ("topic_content_preview" + content .getId (), preview );
7988 }
8089
8190 public TopicContent getTopicContent (int id ) {
@@ -84,16 +93,7 @@ public TopicContent getTopicContent(int id) {
8493
8594 public String getTopicPreview (int id ) {
8695 String key = "topic_content_preview" + id ;
87- String result = null ;
88- result = mLruCache .get (key );
89- if (null != result ) {
90- return result ;
91- }
92- result = getData (key );
93- if (null != result ) {
94- mLruCache .put (key , result );
95- }
96- return result ;
96+ return getData (key );
9797 }
9898
9999 public void saveTopicRepliesList (int topic_id , List <TopicReply > replyList ) {
0 commit comments