diff --git a/MyTracks/res/xml/preferences.xml b/MyTracks/res/xml/preferences.xml
index bd0d5ccd4..e4d0b093f 100644
--- a/MyTracks/res/xml/preferences.xml
+++ b/MyTracks/res/xml/preferences.xml
@@ -175,8 +175,9 @@ limitations under the License.
-
+
diff --git a/MyTracks/src/com/google/android/apps/mytracks/MyTracksSettings.java b/MyTracks/src/com/google/android/apps/mytracks/MyTracksSettings.java
index b97bd311c..0f2c67d70 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/MyTracksSettings.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/MyTracksSettings.java
@@ -354,16 +354,32 @@ public class MyTracksSettings extends PreferenceActivity {
/** Callback for when user confirms resetting all settings. */
private void onResetPreferencesConfirmed() {
- Log.i(TAG, "Resetting all settings");
+ // Change preferences in a separate thread.
+ new Thread() {
+ @Override
+ public void run() {
+ Log.i(TAG, "Resetting all settings");
- // Actually wipe preferences.
- preferences.edit().clear().commit();
+ // Actually wipe preferences (and save synchronously).
+ preferences.edit().clear().commit();
- Toast.makeText(this, R.string.settings_reset_done, Toast.LENGTH_SHORT).show();
+ // Give UI feedback in the UI thread.
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ // Give feedback to the user.
+ Toast.makeText(
+ MyTracksSettings.this,
+ R.string.settings_reset_done,
+ Toast.LENGTH_SHORT).show();
- // Restart the settings activity so all changes are loaded.
- Intent intent = getIntent();
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- startActivity(intent);
+ // Restart the settings activity so all changes are loaded.
+ Intent intent = getIntent();
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ startActivity(intent);
+ }
+ });
+ }
+ }.start();
}
}