11## cacheKit
2- 一个简单易用的cache 库,此版本的cache 支持多实例模式 .
2+ 一个简单易用的cache 库,此版本的cache 支持 ` 多实例模式 ` 和 ` 本地缓存过期模式 ` .
33
44### 特征
55 - 简单
66 - 实用
77 - 方便
88 - 多实例
9+ - 缓存过期
910
1011#### 使用Gradle构建时添加一下依赖即可:
1112```
12- implementation 'com.dvsnier:cache:0.1 .0'
13+ implementation 'com.dvsnier:cache:0.2 .0'
1314```
1415
1516#### 使用前配置
@@ -32,12 +33,12 @@ implementation 'com.dvsnier:cache:0.1.0'
3233 @Override
3334 public void onTerminate() {
3435 super.onTerminate();
35- CacheManager.getInstance().close ();
36+ CacheManager.getInstance().onDestroy ();
3637 }
3738
3839```
3940#### 扩展
40- ##### 第一种
41+ ##### 第一种,默认配置
4142```
4243// 在application的onCreate中初始化
4344 @Override
@@ -48,7 +49,7 @@ implementation 'com.dvsnier:cache:0.1.0'
4849 ...
4950 }
5051```
51- ##### 第二种
52+ ##### 第二种,自定义配置
5253```
5354 // 在application的onCreate中初始化
5455 @Override
@@ -74,7 +75,7 @@ implementation 'com.dvsnier:cache:0.1.0'
7475 }
7576```
7677
77- #### 第三种
78+ #### 第三种,多实例配置
7879```
7980 // 在application的onCreate中初始化
8081 @Override
@@ -106,6 +107,47 @@ implementation 'com.dvsnier:cache:0.1.0'
106107 return versionCode;
107108 }
108109```
110+ #### 第四种,本地缓存过期模式配置
111+ ```
112+ // 在application的onCreate中初始化
113+ @Override
114+ public void onCreate() {
115+ super.onCreate();
116+ // 自定义磁盘1G 缓存空间
117+ int cacheMaxSizeOfDisk = Double.valueOf(CacheStorage.INSTANCE().getFormatted(1, AbstractStorage.SCU.G)).intValue(); // 1G < Integer.MAX_VALUE ~ 2G
118+ // the configure cache alias, here in the downloads directory
119+ CacheManager.getInstance().initialize(IType.TYPE_DOWNLOADS, new ICacheConfig.Builder(this)
120+ .setContext(this)
121+ .setAppVersion(getAppVersionCode(this))
122+ .setCacheMaxSizeOfDisk(cacheMaxSizeOfDisk)
123+ .setUniqueName(IType.TYPE_DOWNLOADS)
124+ .setCacheGenre(new CacheGenre.SCHEDULED()) // the Scheduled Mode, otherwise is default
125+ // .setDebug(true)
126+ // .setLevel(Level.VERBOSE)
127+ .create());
128+
129+ CacheManager.getInstance().setOnTransactionSessionChangeListener(IType.TYPE_DOWNLOADS, new OnTransactionSessionChangeListener() {
130+ @Override
131+ public void onTransactionSessionChange(@NonNull String alias, @NonNull String key, @Nullable Object value) {
132+ Log.i(Debug.TAG(), String.format("the current cache engine(%s), key(%s) - value(%s)", alias, key, value));
133+ }
134+ });
135+ ...
136+ }
137+
138+ public static int getAppVersionCode(Context context) {
139+ int versionCode = 1;
140+ PackageManager pm = context.getPackageManager();
141+ try {
142+ PackageInfo packInfo = pm.getPackageInfo(context.getPackageName(), 0);
143+ versionCode = packInfo.versionCode;
144+ } catch (NameNotFoundException e) {
145+ e.printStackTrace();
146+ }
147+ return versionCode;
148+ }
149+ ```
150+
109151
110152#### 使用
111153#### 1. 默认方式
@@ -122,12 +164,71 @@ implementation 'com.dvsnier:cache:0.1.0'
122164 .commit(IType.TYPE_DOWNLOADS);
123165```
124166
167+ #### 3. 本地缓存过期方式
168+ ```
169+ CacheManager.getInstance().put(IType.TYPE_DOWNLOADS, getKey(), getValue())
170+ .put(IType.TYPE_DOWNLOADS, key1, getValue(), 30, TimeUnit.SECONDS)
171+ .put(IType.TYPE_DOWNLOADS, key2, getValue(), 1, TimeUnit.MINUTES)
172+ .put(IType.TYPE_DOWNLOADS, String.valueOf(System.currentTimeMillis()), getValue(), 3, TimeUnit.SECONDS)
173+ .commit(IType.TYPE_DOWNLOADS);
174+ ```
175+
176+ #### 4. 获取数据
177+ ```
178+ Object o0 = CacheManager.getInstance().get(key0);
179+ String o1 = CacheManager.getInstance().getString(key1);
180+ Object o2 = CacheManager.getInstance().getObject(key2);
181+
182+ Object O3 = CacheManager.getInstance().get(IType.TYPE_DOWNLOADS, key1);
183+ Object O4 = CacheManager.getInstance().get(IType.TYPE_DOWNLOADS, key2);
184+ ```
185+
186+ #### 5. 方法签名
187+
188+ 说明
189+ - ``` Y ``` :支持; ``` * ``` : 原则上支持;
190+
191+ | | 默认 | 多实例 | 缓存过期 | 说明 | 备注 | |
192+ | ---------------------------- | ---- | ------ | -------- | ---- | ---- | --- |
193+ | | | | | | | |
194+ | put(K,V) | Y | * | | | | |
195+ | putString(K,V) | Y | * | | | | |
196+ | putInputStream(K,V) | Y | * | | | | |
197+ | putObject(K,V) | Y | * | | | | |
198+ | | | | | | | |
199+ | get(K) | Y | * | | | | |
200+ | getString(K) | Y | * | | | | |
201+ | getInputStream(K) | Y | * | | | | |
202+ | getObject(K) | Y | * | | | | |
203+ | | | | | | | |
204+ | put(Type,K,V) | | Y | | | | |
205+ | putString(Type,K,V) | | Y | | | | |
206+ | putInputStream(Type,K,V) | | Y | | | | |
207+ | putObject(Type,K,V) | | Y | | | | |
208+ | | | | | | | |
209+ | get(Type,K) | | Y | | | | |
210+ | getString(Type,K) | | Y | | | | |
211+ | getInputStream(Type,K) | | Y | | | | |
212+ | getObject(Type,K) | | Y | | | | |
213+ | | | | | | | |
214+ | put(Type,K,V,D,U) | | Y | Y | | | |
215+ | putString(Type,K,V,D,U) | | Y | Y | | | |
216+ | putInputStream(Type,K,V,D,U) | | Y | Y | | | |
217+ | putObject(Type,K,V,D,U) | | Y | Y | | | |
218+ | | | | | | | |
219+ | get(Type,K) | | Y | Y | | | |
220+ | getString(Type,K) | | Y | Y | | | |
221+ | getInputStream(Type,K) | | Y | Y | | | |
222+ | getObject(Type,K) | | Y | Y | | | |
223+
224+
125225#### FAQ
1262261 . 默认缓存文件保存目录为: ` /mnt/sdcard/Android/data/package_your_name/cache/ `
1272272 . 配置缓存(IType.TYPE_DOWNLOADS)文件保存目录为: ` /mnt/sdcard/Android/data/package_your_name/cache/downloads ` ,
128228 如果配置不符合规范,则提供的默认配置为: ` /mnt/sdcard/Android/data/package_your_name/cache/local `
129229
130- > ``` 0.0.6 ``` 版本的Cache SDK 和``` 0.1.0 ``` 版本的Cache SDK 不兼容,如需简单使用缓存请使用``` 0.0.6 ``` ;
230+ > - ``` 0.0.6 ``` 版本的Cache SDK 和``` 0.1.0 ``` 版本的Cache SDK 不兼容,如需简单使用缓存请使用``` 0.0.6 ``` ;
231+ > - 推荐``` 0.2.0 ``` ,本地缓存过期和持久化自由切换(冷切换),兼容``` 0.1.0 ``` 版本,不兼容``` 0.0.6 ``` 版本;
131232----
132233### 关于作者
133234* Email: < dovsnier@qq.com >
0 commit comments