这是一个将任何Java Object类型的数据序列化后写入缓存文件,将来使用时读取缓存文件并反序列化成对应Java Object的库。
##Gradle
compile 'com.lifeofcoding:cacheutilslibrary:1.1.0@aar'
compile 'com.google.code.gson:gson:2.2.2'
compile 'commons-io:commons-io:2.4'
如果编辑时有下面的错误:
duplication file during packaging of APK ...
Path in archive: META-INF/LICENSE.txt
...
请在 build.gradle
文件的 android
节点添加如下代码:
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/ASL2.0'
exclude 'META-INF/MANIFEST.MF'
}
##配置
你需要在项目的 Application
类中配置一下 CacheUtilsLibrary
库。
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// configure CacheUtilsLibrary
CacheUtils.configureCache(this);
}
}
别忘了在 AndroidManifest.xml
文件中申明这个 MyApplication
类。
##使用 所有样例代码都能在 MainActivity 类中找到。
#####缓存文件内容为 String
// write
CacheUtils.writeFile(CACHE_FILE_STRING, CACHE_FILE_CONTENT_STRING);
// read
String fileContent = CacheUtils.readFile(CACHE_FILE_STRING);
#####缓存文件内容为 Map<String, T>
// write
CacheUtils.writeDataMapFile(CACHE_FILE_MAP, getCacheFileContentMap());
// read
Map<String, Object> mapData = CacheUtils.readDataMapFile(CACHE_FILE_MAP);
// get mapData
private static Map<String, Object> getCacheFileContentMap() {
Map<String, Object> mapData = new HashMap<>();
mapData.put("firstItem", "item0");
mapData.put("secondItem", 1);
mapData.put("thirdItem", false);
return mapData;
}
#####缓存文件内容为 List<Map<String, T>
// write
CacheUtils.writeDataMapsFile(CACHE_FILE_LIST_MAP, getCacheFileContentListMap());
// read
List<Map<String, Object>> listMapData = CacheUtils.readDataMapsFile(CACHE_FILE_LIST_MAP);
// get listMapData
private static List<Map<String, Object>> getCacheFileContentListMap() {
List<Map<String, Object>> listMapData = new ArrayList<Map<String, Object>>();
for (int i = 0; i < 4; i++) {
Map<String, Object> item = new HashMap<>();
item.put("firstItemAt" + i, "item0At" + i);
item.put("secondItemAt" + i, 1 + i);
item.put("thirdItemAt" + i, i % 2 == 0);
listMapData.add(item);
}
return listMapData;
}
#####缓存文件内容为 Object
// write
CacheUtils.writeObjectFile(CACHE_FILE_OBJECT, MyClass.SAMPLE_MYCLASS_1);
// read
MyClass myClassSample = CacheUtils.readObjectFile(CACHE_FILE_OBJECT, new TypeToken<MyClass>(){}.getType());
你能在这里 and 这里分别找到MyClass
和 MyClass.SAMPLE_MYCLASS_1
。
#####缓存文件内容为 List<Object>
// write
CacheUtils.writeObjectFile(CACHE_FILE_LIST_OBJECT, getCacheFileContentListObject());
// read
List<MyClass> myClassList = CacheUtils.readObjectFile(CACHE_FILE_LIST_OBJECT, new TypeToken<List<MyClass>>(){}.getType());
// get List<MyClass> data
private static List<MyClass> getCacheFileContentListObject() {
List<MyClass> listObject = new ArrayList<>();
listObject.add(MyClass.SAMPLE_MYCLASS_1);
listObject.add(MyClass.SAMPLE_MYCLASS_2);
listObject.add(MyClass.SAMPLE_MYCLASS_3);
return listObject;
}
##开源协议
Copyright 2015-2016 Wesley Lin
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.