From 7ea573123b90721c264faf6b01c6d47b78489b12 Mon Sep 17 00:00:00 2001 From: Rodrigo Damazio Date: Wed, 2 Mar 2011 13:48:57 -0300 Subject: [PATCH] Adding vacuum call for when a track is deleted (helps reclaim storage space). --- .../android/apps/mytracks/content/MyTracksProvider.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProvider.java b/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProvider.java index d94be1329..e1c26901a 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProvider.java +++ b/MyTracks/src/com/google/android/apps/mytracks/content/MyTracksProvider.java @@ -193,12 +193,14 @@ public class MyTracksProvider extends ContentProvider { @Override public int delete(Uri url, String where, String[] selectionArgs) { String table; + boolean shouldVacuum = false; switch (urlMatcher.match(url)) { case TRACKPOINTS: table = TRACKPOINTS_TABLE; break; case TRACKS: table = TRACKS_TABLE; + shouldVacuum = true; break; case WAYPOINTS: table = WAYPOINTS_TABLE; @@ -210,6 +212,13 @@ public class MyTracksProvider extends ContentProvider { Log.w(MyTracksProvider.TAG, "provider delete in " + table + "!"); int count = db.delete(table, where, selectionArgs); getContext().getContentResolver().notifyChange(url, null, true); + + if (shouldVacuum) { + // If a potentially large amount of data was deleted, we want to reclaim its space. + Log.i(TAG, "Vacuuming the database"); + db.execSQL("VACUUM"); + } + return count; }