All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.nostra13.universalimageloader.core.assist.MemoryCacheUtil Maven / Gradle / Ivy

/*******************************************************************************
 * Copyright 2011-2013 Sergey Tarasevich
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *******************************************************************************/
package com.nostra13.universalimageloader.core.assist;

import android.graphics.Bitmap;
import com.nostra13.universalimageloader.cache.memory.MemoryCacheAware;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

/**
 * Utility for generating of keys for memory cache, key comparing and other work with memory cache
 *
 * @author Sergey Tarasevich (nostra13[at]gmail[dot]com)
 * @since 1.6.3
 */
public final class MemoryCacheUtil {

	private static final String URI_AND_SIZE_SEPARATOR = "_";
	private static final String WIDTH_AND_HEIGHT_SEPARATOR = "x";

	private MemoryCacheUtil() {
	}

	/**
	 * Generates key for memory cache for incoming image (URI + size).
* Pattern for cache key - [imageUri]_[width]x[height]. */ public static String generateKey(String imageUri, ImageSize targetSize) { return new StringBuilder(imageUri).append(URI_AND_SIZE_SEPARATOR).append(targetSize.getWidth()).append(WIDTH_AND_HEIGHT_SEPARATOR).append(targetSize.getHeight()).toString(); } public static Comparator createFuzzyKeyComparator() { return new Comparator() { @Override public int compare(String key1, String key2) { String imageUri1 = key1.substring(0, key1.lastIndexOf(URI_AND_SIZE_SEPARATOR)); String imageUri2 = key2.substring(0, key2.lastIndexOf(URI_AND_SIZE_SEPARATOR)); return imageUri1.compareTo(imageUri2); } }; } /** * Searches all bitmaps in memory cache which are corresponded to incoming URI.
* Note: Memory cache can contain multiple sizes of the same image if only you didn't set * {@link ImageLoaderConfiguration.Builder#denyCacheImageMultipleSizesInMemory() * denyCacheImageMultipleSizesInMemory()} option in {@linkplain ImageLoaderConfiguration configuration} */ public static List findCachedBitmapsForImageUri(String imageUri, MemoryCacheAware memoryCache) { List values = new ArrayList(); for (String key : memoryCache.keys()) { if (key.startsWith(imageUri)) { values.add(memoryCache.get(key)); } } return values; } /** * Searches all keys in memory cache which are corresponded to incoming URI.
* Note: Memory cache can contain multiple sizes of the same image if only you didn't set * {@link ImageLoaderConfiguration.Builder#denyCacheImageMultipleSizesInMemory() * denyCacheImageMultipleSizesInMemory()} option in {@linkplain ImageLoaderConfiguration configuration} */ public static List findCacheKeysForImageUri(String imageUri, MemoryCacheAware memoryCache) { List values = new ArrayList(); for (String key : memoryCache.keys()) { if (key.startsWith(imageUri)) { values.add(key); } } return values; } /** * Removes from memory cache all images for incoming URI.
* Note: Memory cache can contain multiple sizes of the same image if only you didn't set * {@link ImageLoaderConfiguration.Builder#denyCacheImageMultipleSizesInMemory() * denyCacheImageMultipleSizesInMemory()} option in {@linkplain ImageLoaderConfiguration configuration} */ public static void removeFromCache(String imageUri, MemoryCacheAware memoryCache) { List keysToRemove = new ArrayList(); for (String key : memoryCache.keys()) { if (key.startsWith(imageUri)) { keysToRemove.add(key); } } for (String keyToRemove : keysToRemove) { memoryCache.remove(keyToRemove); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy