Package org.mapsforge.map.layer.cache
Class InMemoryTileCache
- java.lang.Object
-
- org.mapsforge.map.layer.cache.InMemoryTileCache
-
- All Implemented Interfaces:
TileCache,ObservableInterface
public class InMemoryTileCache extends java.lang.Object implements TileCache
A thread-safe cache for tile images with a variable size and LRU policy.
-
-
Constructor Summary
Constructors Constructor Description InMemoryTileCache(int capacity)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddObserver(Observer observer)booleancontainsKey(Job key)voiddestroy()Destroys this cache.org.mapsforge.core.graphics.TileBitmapget(Job key)intgetCapacity()intgetCapacityFirstLevel()org.mapsforge.core.graphics.TileBitmapgetImmediately(Job key)Returns tileBitmap only if available at fastest cache in case of multi-layered cache, null otherwise.voidpurge()Purges this cache.voidput(Job key, org.mapsforge.core.graphics.TileBitmap bitmap)voidremoveObserver(Observer observer)voidsetCapacity(int capacity)Sets the new size of this cache.voidsetWorkingSet(java.util.Set<Job> jobs)Reserves a working set in this cache, for multi-level caches this means bringing the elements in workingSet into the fastest cache.
-
-
-
Method Detail
-
containsKey
public boolean containsKey(Job key)
- Specified by:
containsKeyin interfaceTileCache- Returns:
- true if this cache contains an image for the given key, false otherwise.
- See Also:
Map.containsKey(java.lang.Object)
-
destroy
public void destroy()
Description copied from interface:TileCacheDestroys this cache. Applications are expected to call this method when they no longer require the cache. In versions prior to 0.5.1, it was common practice to call this method but continue using the cache, in order to empty it, forcing all tiles to be re-rendered or re-requested from the source. Beginning with 0.5.1,TileCache.purge()should be used for this purpose. The earlier practice is now discouraged and may lead to unexpected results when used with features introduced in 0.5.1 or later.
-
get
public org.mapsforge.core.graphics.TileBitmap get(Job key)
-
getCapacity
public int getCapacity()
- Specified by:
getCapacityin interfaceTileCache- Returns:
- the capacity of this cache.
-
getCapacityFirstLevel
public int getCapacityFirstLevel()
- Specified by:
getCapacityFirstLevelin interfaceTileCache- Returns:
- the capacity of the first level of a multi-level cache.
-
getImmediately
public org.mapsforge.core.graphics.TileBitmap getImmediately(Job key)
Description copied from interface:TileCacheReturns tileBitmap only if available at fastest cache in case of multi-layered cache, null otherwise.- Specified by:
getImmediatelyin interfaceTileCache- Returns:
- tileBitmap if available without getting from lower storage levels
-
purge
public void purge()
Description copied from interface:TileCachePurges this cache. Calls toTileCache.get(Job)issued after purging will not return any tiles added before the purge operation. Applications should purge the tile cache when map model parameters change, such as the render style for locally rendered tiles, or the source for downloaded tiles. Applications which frequently alternate between a limited number of map model configurations may want to consider using a different cache for each.
-
put
public void put(Job key, org.mapsforge.core.graphics.TileBitmap bitmap)
-
setCapacity
public void setCapacity(int capacity)
Sets the new size of this cache. If this cache already contains more items than the new capacity allows, items are discarded based on the cache policy.- Parameters:
capacity- the new maximum number of entries in this cache.- Throws:
java.lang.IllegalArgumentException- if the capacity is negative.
-
setWorkingSet
public void setWorkingSet(java.util.Set<Job> jobs)
Description copied from interface:TileCacheReserves a working set in this cache, for multi-level caches this means bringing the elements in workingSet into the fastest cache.- Specified by:
setWorkingSetin interfaceTileCache
-
addObserver
public void addObserver(Observer observer)
- Specified by:
addObserverin interfaceObservableInterface
-
removeObserver
public void removeObserver(Observer observer)
- Specified by:
removeObserverin interfaceObservableInterface
-
-