Home

Awesome

TCache

TCache是一个封装的Android缓存框架,使用具有很大的灵活性,下面将介绍该框架的使用方法和设计思想
TCacheSamples

TCache使用方法

TCache获取方法和接口介绍

  //通过Context获取对象
  public static TCache get(Context context)
  //通过Context,并指定缓存的根目录
  public static TCache get(Context context, String rootCacheDir)
  //通过Context,并指定缓存的根目录,缓存的相对目录
  public static TCache get(Context context, String rootCacheDir, String relativeCacheDir)
  //通过Context,缓存的根目录,缓存的相对目录,存储目录最多文件数,最大缓存目录空间
  public static TCache get(Context context, String rootCacheDir, String relativeCacheDir,
              int maxDiskTotalCount, int maxDiskTotalSpace)
  //通过Context,缓存的根目录,缓存的相对目录,存储目录最多文件数,最大缓存目录空间,指定缓存默认失效时间
  public static TCache get(Context context, String rootCacheDir, String relativeCacheDir,
              int maxDiskTotalCount, int maxDiskTotalSpace, int defCacheAge)
interface CacheManager extends Cache {
  //缓存字节数组
  void putBytes(String key, byte[] bytes);
  //获取缓存的字节数组
  byte[] getBytes(String key);
  //缓存Bitmap
  void putBitmap(String key, Bitmap bitmap);
  //获取缓存的Bitmap
  Bitmap getBitmap(String key);
  //缓存序列化对象
  <T extends Serializable> void putSerializable(String key, T obj);
  //获取缓存的序列化对象
  <T extends Serializable> T getSerializable(String key);
  //缓存JSONObject
  void putJSONObject(String key, JSONObject obj);
  //获取缓存的JSONObject
  JSONObject getJSONObject(String key) throws JSONException;
}
interface Cache {
    //通过字节转换器缓存对象
    <T> void putByteMapper(String key, T obj, ByteMapper<T> mapper);
    //通过字节转换器获取缓存的对象
    <T> T getByteMapper(String key, ByteMapper<T> mapper);
    //通过默认的有效缓存周期判断指定的对象是否过期
    boolean isExpired(String key);
    //通过指定的的有效缓存周期判断指定的对象是否过期
    boolean isExpired(String key, long age);
    //清除指定的缓存
    void evict(String key);
    //清除所有缓存
    void evictAll();
    //是否有指定key的缓存
    boolean isCached(String key);
}
public interface ByteMapper<T> {
    //通过对象获取字节数组
    byte[] getBytes(T obj);
    //通过字节数组获取对象
    T getObject(byte[] bytes);
}
public class BitmapByteMapper implements ByteMapper<Bitmap> {

    BitmapByteMapper() {
        
    }

    @Override
    public byte[] getBytes(Bitmap bitmap) {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, bos);
        return bos.toByteArray();
    }

    @Override
    public Bitmap getObject(byte[] bytes) {
        return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
    }
}

TCache的设计思想

TCache总结

TCache是一个方便缓存数据的实用框架,便于扩展;但也有不足,欢迎大家提出issues指正交流,不胜感激!!!