aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/connector
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2014-03-06 00:06:47 +0100
committerSamuel Tardieu <sam@rfc1149.net>2014-03-06 00:06:47 +0100
commitc88e8e4d3d5269f0c7caf00202549f45f2e8c7ac (patch)
tree73113b4731ef02497f7ada771aa28a050c2ee4a2 /main/src/cgeo/geocaching/connector
parent2fac90e7b808f19eabf25c01a924e75944228f40 (diff)
downloadcgeo-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.java4
-rw-r--r--main/src/cgeo/geocaching/connector/gc/Tile.java37
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);
+ }
+ }
}
}
-
}