X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altosdroid%2Fsrc%2Forg%2Faltusmetrum%2FAltosDroid%2FPreloadMapActivity.java;h=11d712806570ad4b7e0a74dc0f13f701735469f8;hb=895cb58a6cd7424ee63c24d791b5988f41f85d31;hp=13a44e1f6902f3def172a88c8b31adb776729860;hpb=e0081f7ba6fc9f1e4484d3e291fd30065ad5b620;p=fw%2Faltos diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/PreloadMapActivity.java b/altosdroid/src/org/altusmetrum/AltosDroid/PreloadMapActivity.java index 13a44e1f..11d71280 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/PreloadMapActivity.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/PreloadMapActivity.java @@ -69,8 +69,14 @@ public class PreloadMapActivity extends Activity implements AltosLaunchSiteListe private ProgressBar progress; + private AltosMapLoader loader; + + long loader_notify_time; + /* AltosMapLoaderListener interfaces */ public void loader_start(final int max) { + loader_notify_time = System.currentTimeMillis(); + this.runOnUiThread(new Runnable() { public void run() { progress.setMax(max); @@ -80,6 +86,13 @@ public class PreloadMapActivity extends Activity implements AltosLaunchSiteListe } public void loader_notify(final int cur, final int max, final String name) { + long now = System.currentTimeMillis(); + + if (now - loader_notify_time < 100) + return; + + loader_notify_time = now; + this.runOnUiThread(new Runnable() { public void run() { progress.setProgress(cur); @@ -88,6 +101,7 @@ public class PreloadMapActivity extends Activity implements AltosLaunchSiteListe } public void loader_done(int max) { + loader = null; this.runOnUiThread(new Runnable() { public void run() { progress.setProgress(0); @@ -234,7 +248,7 @@ public class PreloadMapActivity extends Activity implements AltosLaunchSiteListe private double radius() { double r = value_distance(radius); if (AltosPreferences.imperial_units()) - r = AltosConvert.distance.inverse(r); + r = AltosConvert.miles_to_meters(r); else r = r * 1000; return r; @@ -254,6 +268,9 @@ public class PreloadMapActivity extends Activity implements AltosLaunchSiteListe } private void load() { + if (loader != null) + return; + try { double lat = latitude(); double lon = longitude(); @@ -264,7 +281,7 @@ public class PreloadMapActivity extends Activity implements AltosLaunchSiteListe AltosDebug.debug("PreloadMap load %f %f %d %d %f %d\n", lat, lon, min, max, r, t); - new AltosMapLoader(map, this, lat, lon, min, max, r, t); + loader = new AltosMapLoader(map, this, lat, lon, min, max, r, t); } catch (ParseException e) { AltosDebug.debug("PreloadMap load raised exception %s", e.toString()); } @@ -409,6 +426,9 @@ public class PreloadMapActivity extends Activity implements AltosLaunchSiteListe protected void onDestroy() { super.onDestroy(); + if (loader != null) + loader.abort(); + // Stop listening for location updates ((LocationManager) getSystemService(Context.LOCATION_SERVICE)).removeUpdates(this); }