package tk.djcrazy.libCC98; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import android.content.Context; import com.github.droidfu.cachefu.AbstractCache; import com.github.droidfu.cachefu.CacheHelper; public class SerializableCache extends AbstractCache<String, Serializable> { private static SerializableCache cache = null; private static final int CACHE_INIT_CAP = 64; private static final int CACHE_EXPIRATION_MINUTES = 7; private static final int MAX_CONCURRENT_THREADS = 4; public static SerializableCache getInstance(Context context) { if (cache == null) { synchronized (SerializableCache.class) { if (cache == null) { cache = new SerializableCache(CACHE_INIT_CAP, CACHE_EXPIRATION_MINUTES, MAX_CONCURRENT_THREADS); cache.enableDiskCache(context, AbstractCache.DISK_CACHE_INTERNAL); } } } return cache; } private SerializableCache(int initialCapacity, long expirationInMinutes, int maxConcurrentThreads) { super("SerializableCache", initialCapacity, expirationInMinutes, maxConcurrentThreads); } public synchronized void removeAllWithPrefix(String urlPrefix) { CacheHelper.removeAllWithStringPrefix(this, urlPrefix); } @Override public String getFileNameForKey(String key) { return CacheHelper.getFileNameFromUrl(key); } @Override protected Serializable readValueFromDisk(File file) throws IOException { ObjectInputStream istream = new ObjectInputStream( new FileInputStream(file)); Serializable serializable = null; try { serializable = (Serializable)istream.readObject(); } catch (ClassNotFoundException e) { e.printStackTrace(); } istream.close(); return serializable; } @Override protected void writeValueToDisk(File file, Serializable value) throws IOException { ObjectOutputStream outputStream = new ObjectOutputStream( new FileOutputStream(file)); outputStream.writeObject(value); outputStream.close(); } }