From 44afa1623eedfb55a261ef3a6795d1fcd8f2b98a Mon Sep 17 00:00:00 2001 From: Rodrigo Damazio Date: Thu, 14 Oct 2010 21:06:59 -0300 Subject: [PATCH] Making locations be reused when writing tracks. --- .../android/apps/mytracks/io/TrackWriter.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/TrackWriter.java b/MyTracks/src/com/google/android/apps/mytracks/io/TrackWriter.java index 0f9cd5572..6a8226bfb 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/io/TrackWriter.java +++ b/MyTracks/src/com/google/android/apps/mytracks/io/TrackWriter.java @@ -266,9 +266,10 @@ public class TrackWriter { private void writeLocations() { boolean wroteFirst = false; boolean segmentOpen = false; - Location lastLoc = null; + Location lastLoc = null, loc = null; boolean isLastValid = false; - Cursor locationsCursor = providerUtils.getLocationsCursor(track.getId(), 0, -1, false); + Cursor locationsCursor = + providerUtils.getLocationsCursor(track.getId(), 0, -1, false); if (locationsCursor == null || !locationsCursor.moveToFirst()) { Log.w(MyTracksConstants.TAG, "Unable to get any points to write"); @@ -276,8 +277,8 @@ public class TrackWriter { } do { - // TODO: Use fillLocation instead - Location loc = providerUtils.createLocation(locationsCursor); + if (loc == null) loc = new Location(""); + providerUtils.fillLocation(locationsCursor, loc); boolean isValid = MyTracksUtils.isValidLocation(loc); boolean validSegment = isValid && isLastValid; @@ -306,7 +307,12 @@ public class TrackWriter { } } + // Swap loc and lastLoc (so lastLoc is reused) + Location tmp = lastLoc; lastLoc = loc; + loc = tmp; + loc.reset(); + isLastValid = isValid; } while (locationsCursor.moveToNext());