读写数据至缓存文件的Android库:CacheUtilsLibrary
jopen
8年前
一个简单的Android工具类库用于将任意类型的数据写进至缓存文件中,之后读取它们。
使用Gson来序列化和反序列化这些数据。 Gradle
compile 'com.lifeofcoding:cacheutilslibrary:1.0.0@aar'
如果出现如下错误:
duplication file during packaging of APK ... Path in archive: META-INF/LICENSE.txt ...
Please add such code in your android entry of your build.gradle file:
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' }
Configuration
You need to configureCacheUtilsLibraryin yourApplicationclass.
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); // configure CacheUtilsLibrary CacheUtils.configureCache(this); } }
Don't forget to declare theMyApplicationclass in yourAndroidManifest.xmlfile.
Usage
All sample code can be found in the MainActivity file.
CacheStringFile
// write CacheUtils.writeFile(CACHE_FILE_STRING, CACHE_FILE_CONTENT_STRING); // read String fileContent = CacheUtils.readFile(CACHE_FILE_STRING);
CacheMap<String, T>File
// 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; }
CacheList<Map<String, T>File
// 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; }
CacheObjectFile
// write CacheUtils.writeObjectFile(CACHE_FILE_OBJECT, MyClass.SAMPLE_MYCLASS_1); // read MyClass myClassSample = CacheUtils.readObjectFile(CACHE_FILE_OBJECT, new TypeToken<MyClass>(){}.getType());
You can seeMyClassandMyClass.SAMPLE_MYCLASS_1here and here.
CacheList<Object>File
// 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; }