Class 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
      void addObserver​(Observer observer)  
      boolean containsKey​(Job key)  
      void destroy()
      Destroys this cache.
      org.mapsforge.core.graphics.TileBitmap get​(Job key)  
      int getCapacity()  
      int getCapacityFirstLevel()  
      org.mapsforge.core.graphics.TileBitmap getImmediately​(Job key)
      Returns tileBitmap only if available at fastest cache in case of multi-layered cache, null otherwise.
      void purge()
      Purges this cache.
      void put​(Job key, org.mapsforge.core.graphics.TileBitmap bitmap)  
      void removeObserver​(Observer observer)  
      void setCapacity​(int capacity)
      Sets the new size of this cache.
      void setWorkingSet​(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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • InMemoryTileCache

        public InMemoryTileCache​(int capacity)
        Parameters:
        capacity - the maximum number of entries in this cache.
        Throws:
        java.lang.IllegalArgumentException - if the capacity is negative.
    • Method Detail

      • containsKey

        public boolean containsKey​(Job key)
        Specified by:
        containsKey in interface TileCache
        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: TileCache
        Destroys 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.

        Specified by:
        destroy in interface TileCache
      • get

        public org.mapsforge.core.graphics.TileBitmap get​(Job key)
        Specified by:
        get in interface TileCache
        Returns:
        the image for the given key or null, if this cache contains no image for the key.
        See Also:
        Map.get(java.lang.Object)
      • getCapacity

        public int getCapacity()
        Specified by:
        getCapacity in interface TileCache
        Returns:
        the capacity of this cache.
      • getCapacityFirstLevel

        public int getCapacityFirstLevel()
        Specified by:
        getCapacityFirstLevel in interface TileCache
        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: TileCache
        Returns tileBitmap only if available at fastest cache in case of multi-layered cache, null otherwise.
        Specified by:
        getImmediately in interface TileCache
        Returns:
        tileBitmap if available without getting from lower storage levels
      • purge

        public void purge()
        Description copied from interface: TileCache
        Purges this cache.

        Calls to TileCache.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.

        Specified by:
        purge in interface TileCache
      • put

        public void put​(Job key,
                        org.mapsforge.core.graphics.TileBitmap bitmap)
        Specified by:
        put in interface TileCache
        See Also:
        Map.put(K, V)
      • 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: TileCache
        Reserves a working set in this cache, for multi-level caches this means bringing the elements in workingSet into the fastest cache.
        Specified by:
        setWorkingSet in interface TileCache