diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2014-03-06 00:06:47 +0100 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2014-03-06 00:06:47 +0100 |
| commit | c88e8e4d3d5269f0c7caf00202549f45f2e8c7ac (patch) | |
| tree | 73113b4731ef02497f7ada771aa28a050c2ee4a2 /main/src/cgeo/geocaching/connector | |
| parent | 2fac90e7b808f19eabf25c01a924e75944228f40 (diff) | |
| download | cgeo-c88e8e4d3d5269f0c7caf00202549f45f2e8c7ac.zip cgeo-c88e8e4d3d5269f0c7caf00202549f45f2e8c7ac.tar.gz cgeo-c88e8e4d3d5269f0c7caf00202549f45f2e8c7ac.tar.bz2 | |
refactoring: use a LRUSet instead of a LRUMap for tile cache
Diffstat (limited to 'main/src/cgeo/geocaching/connector')
| -rw-r--r-- | main/src/cgeo/geocaching/connector/gc/GCMap.java | 4 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/connector/gc/Tile.java | 37 |
2 files changed, 14 insertions, 27 deletions
diff --git a/main/src/cgeo/geocaching/connector/gc/GCMap.java b/main/src/cgeo/geocaching/connector/gc/GCMap.java index 2782b64..ed17dfc 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCMap.java +++ b/main/src/cgeo/geocaching/connector/gc/GCMap.java @@ -305,7 +305,7 @@ public class GCMap { for (Tile tile : tiles) { - if (!Tile.Cache.contains(tile)) { + if (!Tile.cache.contains(tile)) { final Parameters params = new Parameters( "x", String.valueOf(tile.getX()), "y", String.valueOf(tile.getY()), @@ -351,7 +351,7 @@ public class GCMap { else { searchResult.addSearchResult(search); } - Tile.Cache.add(tile); + Tile.cache.add(tile); } // release native bitmap memory diff --git a/main/src/cgeo/geocaching/connector/gc/Tile.java b/main/src/cgeo/geocaching/connector/gc/Tile.java index 6a257cd..4a0d74a 100644 --- a/main/src/cgeo/geocaching/connector/gc/Tile.java +++ b/main/src/cgeo/geocaching/connector/gc/Tile.java @@ -5,11 +5,10 @@ import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.geopoint.Viewport; import cgeo.geocaching.network.Network; import cgeo.geocaching.network.Parameters; -import cgeo.geocaching.utils.LeastRecentlyUsedMap; +import cgeo.geocaching.utils.LeastRecentlyUsedSet; import cgeo.geocaching.utils.Log; import ch.boye.httpclientandroidlib.HttpResponse; - import org.eclipse.jdt.annotation.NonNull; import android.graphics.Bitmap; @@ -17,7 +16,6 @@ import android.graphics.BitmapFactory; import java.io.IOException; import java.util.ArrayList; -import java.util.Collection; import java.util.HashSet; import java.util.Locale; import java.util.Set; @@ -45,6 +43,8 @@ public class Tile { } } + public static TileCache cache = new TileCache(); + private final int tileX; private final int tileY; private final int zoomLevel; @@ -301,31 +301,18 @@ public class Tile { return tiles; } - public static class Cache { - private final static LeastRecentlyUsedMap<Integer, Tile> tileCache = new LeastRecentlyUsedMap.LruCache<Integer, Tile>(64); - - public static void removeFromTileCache(final ICoordinates point) { - if (point != null) { - Collection<Tile> tiles = new ArrayList<Tile>(tileCache.values()); - for (Tile tile : tiles) { - if (tile.containsPoint(point)) { - tileCache.remove(tile.hashCode()); - } - } - } - } + public static class TileCache extends LeastRecentlyUsedSet<Tile> { - public static boolean contains(final Tile tile) { - return tileCache.containsKey(tile.hashCode()); + public TileCache() { + super(64); } - public static void add(final Tile tile) { - tileCache.put(tile.hashCode(), tile); - } - - public static void clear() { - tileCache.clear(); + public void removeFromTileCache(@NonNull final ICoordinates point) { + for (final Tile tile : new ArrayList<Tile>(this)) { + if (tile.containsPoint(point)) { + remove(tile); + } + } } } - } |
