/** * Puts bitmap into the cache. * * @param key the key for the bitmap. * @param bitmap the bitmap. * @return true if successful; false otherwise. */ private boolean put(String key, Bitmap bitmap) { boolean isSuccessful = true; // Get unique filename based on key. final String filename = StorageHelper.generateValidFilename(key); if (TextHelper.isValid(filename)) { final File file = new File(mDiskCacheDir, filename); // Store PNG in disk cache. try { final OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(file)); isSuccessful = ImageHelper.writePng(bitmap, outputStream); outputStream.flush(); outputStream.close(); } catch (FileNotFoundException e) { isSuccessful = false; } catch (IOException e) { isSuccessful = false; } if (isSuccessful) { // Read PNG from disk cache and put bitmap in memory cache. Bitmap storedBitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); if (storedBitmap != null) { mMemCache.put(key, storedBitmap); } else { isSuccessful = false; } } } return isSuccessful; }
/** * Removes bitmap from the cache. * * @param key the key for the bitmap. * @return true if successful; false otherwise. */ private boolean remove(String key) { boolean isSuccessful = true; // Get unique filename based on key. final String filename = StorageHelper.generateValidFilename(key); if (TextHelper.isValid(filename)) { // Remove PNG from disk cache. final File file = new File(mDiskCacheDir, filename); isSuccessful = file.delete(); // Remove bitmap from memory cache. mMemCache.remove(key); } return isSuccessful; }
/** * Gets bitmap from the cache. * * @param key the key for the bitmap. * @return the bitmap; or null if failed. */ private Bitmap get(String key) { // Try to get bitmap from memory cache. Bitmap bitmap = mMemCache.get(key); // Try to get PNG from disk cache if bitmap not found in memory cache. if (bitmap == null) { // Get unique filename based on key. String filename = StorageHelper.generateValidFilename(key); if (TextHelper.isValid(filename)) { final File file = new File(mDiskCacheDir, filename); bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); if (bitmap != null) { // Put bitmap in memory cache. mMemCache.put(key, bitmap); } } } return bitmap; }