diff --git a/MyTracks/src/com/google/android/apps/mytracks/CheckUnits.java b/MyTracks/src/com/google/android/apps/mytracks/CheckUnits.java index 5947f8900..d1fc56029 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/CheckUnits.java +++ b/MyTracks/src/com/google/android/apps/mytracks/CheckUnits.java @@ -16,6 +16,7 @@ package com.google.android.apps.mytracks; +import com.google.android.apps.mytracks.util.ApiFeatures; import com.google.android.maps.mytracks.R; import android.app.Activity; @@ -82,7 +83,8 @@ class CheckUnits { } private static void recordCheckPerformed(SharedPreferences preferences) { - preferences.edit().putBoolean(PREFERENCE_UNITS_CHECKED, true).commit(); + ApiFeatures.getInstance().getApiPlatformAdapter().applyPreferenceChanges( + preferences.edit().putBoolean(PREFERENCE_UNITS_CHECKED, true)); } private CheckUnits() { diff --git a/MyTracks/src/com/google/android/apps/mytracks/Eula.java b/MyTracks/src/com/google/android/apps/mytracks/Eula.java index f070e310a..4471d93fc 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/Eula.java +++ b/MyTracks/src/com/google/android/apps/mytracks/Eula.java @@ -15,6 +15,7 @@ */ package com.google.android.apps.mytracks; +import com.google.android.apps.mytracks.util.ApiFeatures; import com.google.android.apps.mytracks.util.ResourceUtils; import com.google.android.maps.mytracks.R; @@ -77,7 +78,8 @@ class Eula { } private static void accept(Activity activity, SharedPreferences preferences) { - preferences.edit().putBoolean(PREFERENCE_EULA_ACCEPTED, true).commit(); + ApiFeatures.getInstance().getApiPlatformAdapter().applyPreferenceChanges( + preferences.edit().putBoolean(PREFERENCE_EULA_ACCEPTED, true)); Intent startIntent = new Intent(activity, WelcomeActivity.class); activity.startActivityForResult(startIntent, MyTracksConstants.WELCOME); } diff --git a/MyTracks/src/com/google/android/apps/mytracks/MyTracks.java b/MyTracks/src/com/google/android/apps/mytracks/MyTracks.java index 57d0377b6..c4ed31c11 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/MyTracks.java +++ b/MyTracks/src/com/google/android/apps/mytracks/MyTracks.java @@ -1064,10 +1064,10 @@ public class MyTracks extends TabActivity implements OnTouchListener, * @param trackId the id of the track */ public void setSelectedTrackId(final long trackId) { - sharedPreferences - .edit() - .putLong(getString(R.string.selected_track_key), trackId) - .commit(); + ApiFeatures.getInstance().getApiPlatformAdapter().applyPreferenceChanges( + sharedPreferences + .edit() + .putLong(getString(R.string.selected_track_key), trackId)); } long getSelectedTrackId() { diff --git a/MyTracks/src/com/google/android/apps/mytracks/MyTracksDeleteAllTracks.java b/MyTracks/src/com/google/android/apps/mytracks/MyTracksDeleteAllTracks.java index 8a5f255f1..1e939b144 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/MyTracksDeleteAllTracks.java +++ b/MyTracks/src/com/google/android/apps/mytracks/MyTracksDeleteAllTracks.java @@ -16,6 +16,7 @@ package com.google.android.apps.mytracks; import com.google.android.apps.mytracks.content.MyTracksProviderUtils; +import com.google.android.apps.mytracks.util.ApiFeatures; import com.google.android.maps.mytracks.R; import android.app.AlertDialog; @@ -63,7 +64,7 @@ public class MyTracksDeleteAllTracks extends Handler { context.getSharedPreferences(MyTracksSettings.SETTINGS_NAME, 0); SharedPreferences.Editor editor = prefs.edit(); editor.putLong(context.getString(R.string.selected_track_key), -1); - editor.commit(); + ApiFeatures.getInstance().getApiPlatformAdapter().applyPreferenceChanges(editor); if (done != null) { Handler h = new Handler(); h.post(done); diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/ApiPlatformAdapter.java b/MyTracks/src/com/google/android/apps/mytracks/util/ApiPlatformAdapter.java index 9415fd153..c68832735 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/util/ApiPlatformAdapter.java +++ b/MyTracks/src/com/google/android/apps/mytracks/util/ApiPlatformAdapter.java @@ -18,6 +18,7 @@ package com.google.android.apps.mytracks.util; import android.app.Notification; import android.app.NotificationManager; import android.app.Service; +import android.content.SharedPreferences; import android.os.HandlerThread; /** @@ -58,6 +59,12 @@ public interface ApiPlatformAdapter { */ boolean stopHandlerThread(HandlerThread handlerThread); + /** + * Applies all changes done to the given preferences editor. + * Changes may or may not be applied immediately. + */ + void applyPreferenceChanges(SharedPreferences.Editor editor); + /** * Enables strict mode where supported, only if this is a development build. */ diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/CupcakePlatformAdapter.java b/MyTracks/src/com/google/android/apps/mytracks/util/CupcakePlatformAdapter.java index b59f844a6..354f0a307 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/util/CupcakePlatformAdapter.java +++ b/MyTracks/src/com/google/android/apps/mytracks/util/CupcakePlatformAdapter.java @@ -18,6 +18,7 @@ package com.google.android.apps.mytracks.util; import android.app.Notification; import android.app.NotificationManager; import android.app.Service; +import android.content.SharedPreferences.Editor; import android.os.HandlerThread; /** @@ -51,6 +52,11 @@ public class CupcakePlatformAdapter implements ApiPlatformAdapter { return false; } + @Override + public void applyPreferenceChanges(Editor editor) { + editor.commit(); + } + @Override public void enableStrictMode() { // Not supported diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/EclairPlatformAdapter.java b/MyTracks/src/com/google/android/apps/mytracks/util/EclairPlatformAdapter.java index e8bdd8b74..91c1ea1d3 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/util/EclairPlatformAdapter.java +++ b/MyTracks/src/com/google/android/apps/mytracks/util/EclairPlatformAdapter.java @@ -18,6 +18,7 @@ package com.google.android.apps.mytracks.util; import android.app.Notification; import android.app.NotificationManager; import android.app.Service; +import android.content.SharedPreferences.Editor; import android.os.HandlerThread; /** @@ -46,6 +47,11 @@ public class EclairPlatformAdapter implements ApiPlatformAdapter { return handlerThread.quit(); } + @Override + public void applyPreferenceChanges(Editor editor) { + editor.commit(); + } + @Override public void enableStrictMode() { // Not supported diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/GingerbreadPlatformAdapter.java b/MyTracks/src/com/google/android/apps/mytracks/util/GingerbreadPlatformAdapter.java index 72dd67371..caa73a170 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/util/GingerbreadPlatformAdapter.java +++ b/MyTracks/src/com/google/android/apps/mytracks/util/GingerbreadPlatformAdapter.java @@ -2,6 +2,7 @@ package com.google.android.apps.mytracks.util; import com.google.android.apps.mytracks.MyTracksConstants; +import android.content.SharedPreferences.Editor; import android.os.StrictMode; import android.util.Log; @@ -12,6 +13,12 @@ import android.util.Log; * @author Rodrigo Damazio */ public class GingerbreadPlatformAdapter extends EclairPlatformAdapter { + @Override + public void applyPreferenceChanges(Editor editor) { + // Apply asynchronously + editor.apply(); + } + @Override public void enableStrictMode() { Log.d(MyTracksConstants.TAG, "Enabling strict mode");