123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- package com.edufound.base.util;
- import android.os.Parcelable;
- import com.tencent.mmkv.MMKV;
- import java.util.Collections;
- import java.util.Set;
- public class MMKVUtil {
- private MMKV mkv;
- private MMKVUtil() {
- mkv = MMKV.defaultMMKV();
- }
- public static MMKVUtil getInstance() {
- return SingletonHolder.sInstance;
- }
- //静态内部类
- private static class SingletonHolder {
- private static final MMKVUtil sInstance = new MMKVUtil();
- }
- /**
- * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法
- *
- * @param key
- * @param object
- */
- public void encode(String key, Object object) {
- if (object instanceof String) {
- mkv.encode(key, (String) object);
- } else if (object instanceof Integer) {
- mkv.encode(key, (Integer) object);
- } else if (object instanceof Boolean) {
- mkv.encode(key, (Boolean) object);
- } else if (object instanceof Float) {
- mkv.encode(key, (Float) object);
- } else if (object instanceof Long) {
- mkv.encode(key, (Long) object);
- } else if (object instanceof Double) {
- mkv.encode(key, (Double) object);
- } else if (object instanceof byte[]) {
- mkv.encode(key, (byte[]) object);
- } else {
- mkv.encode(key, object.toString());
- }
- }
- public void encodeSet(String key, Set<String> sets) {
- mkv.encode(key, sets);
- }
- public void encodeParcelable(String key, Parcelable obj) {
- mkv.encode(key, obj);
- }
- /**
- * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值
- *
- * @param key
- * @param defaultObject
- * @return
- */
- public Object decode(String key, Object defaultObject) {
- if (defaultObject instanceof String) {
- return mkv.decodeString(key, (String) defaultObject);
- } else if (defaultObject instanceof Integer) {
- return mkv.decodeInt(key, (Integer) defaultObject);
- } else if (defaultObject instanceof Boolean) {
- return mkv.decodeBool(key, (Boolean) defaultObject);
- } else if (defaultObject instanceof Float) {
- return mkv.decodeFloat(key, (Float) defaultObject);
- } else if (defaultObject instanceof Long) {
- return mkv.decodeLong(key, (Long) defaultObject);
- } else if (defaultObject instanceof Double) {
- return mkv.decodeDouble(key, (Double) defaultObject);
- } else if (defaultObject instanceof byte[]) {
- return mkv.decodeBytes(key, (byte[]) defaultObject);
- }
- return defaultObject;
- }
- /**
- * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值
- */
- public Integer decodeInt(String key) {
- return mkv.decodeInt(key, 0);
- }
- public Double decodeDouble(String key) {
- return mkv.decodeDouble(key, 0.00);
- }
- public Long decodeLong(String key) {
- return mkv.decodeLong(key, 0L);
- }
- public Long decodeLong(String key, long defaultValue) {
- return mkv.decodeLong(key, defaultValue);
- }
- public Boolean decodeBoolean(String key) {
- return mkv.decodeBool(key, false);
- }
- public Float decodeFloat(String key) {
- return mkv.decodeFloat(key, 0F);
- }
- public byte[] decodeBytes(String key) {
- return mkv.decodeBytes(key);
- }
- public String decodeString(String key) {
- return mkv.decodeString(key, "");
- }
- public Set<String> decodeStringSet(String key) {
- return mkv.decodeStringSet(key, Collections.<String>emptySet());
- }
- public Parcelable decodeParcelable(String key, Class clz) {
- return mkv.decodeParcelable(key, clz);
- }
- /**
- * 移除某个key对
- *
- * @param key
- */
- public void removeKey(String key) {
- mkv.removeValueForKey(key);
- }
- /**
- * 移除多个key对
- *
- * @param key
- */
- public void removeKeys(String[] key) {
- mkv.removeValuesForKeys(key);
- }
- /**
- * 获取全部key对
- */
- public String[] getAllKeys() {
- return mkv.allKeys();
- }
- /**
- * 含有某个key
- *
- * @param key
- * @return
- */
- public boolean hasKey(String key) {
- return mkv.containsKey(key);
- }
- /**
- * 含有某个key
- *
- * @param key
- * @return
- */
- public boolean have(String key) {
- return mkv.contains(key);
- }
- /**
- * 清除所有key
- */
- public void clearAll() {
- mkv.clearMemoryCache();
- mkv.clearAll();
- mkv.clear();
- }
- /**
- * 获取操作对象
- *
- * @return
- */
- public MMKV getMkv() {
- return mkv;
- }
- }
|