package org.aisen.android.network.cache; import org.aisen.android.common.setting.Setting; import org.aisen.android.network.http.Params; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Executor; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; /** * 缓存接口 * * @author wangdan * */ public interface ICacheUtility { static final int CORE_POOL_SIZE = 5; static final int MAXIMUM_POOL_SIZE = 128; static final int KEEP_ALIVE = 1; static final ThreadFactory sThreadFactory = new ThreadFactory() { private final AtomicInteger mCount = new AtomicInteger(1); public Thread newThread(Runnable r) { return new Thread(r, "AsyncTask #" + mCount.getAndIncrement()); } }; static final BlockingQueue<Runnable> sPoolWorkQueue = new LinkedBlockingQueue<Runnable>(10); public static final Executor THREAD_POOL_EXECUTOR = new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE, TimeUnit.SECONDS, sPoolWorkQueue, sThreadFactory); public <T> Cache<T> findCacheData(Setting action, Params params, Class<T> responseCls); public void addCacheData(Setting action, Params params, Object responseObj); public static class Cache<T> { private T t; // true-缓存到期 private boolean expired; public Cache() { } public Cache(T t, boolean expired) { this.t = t; this.expired = expired; } public T getT() { return t; } public void setT(T t) { this.t = t; } public boolean expired() { return expired; } public void setExpired(boolean expired) { this.expired = expired; } } }