diff --git a/MyTracks/src/com/google/android/apps/mytracks/TrackListActivity.java b/MyTracks/src/com/google/android/apps/mytracks/TrackListActivity.java index 3e5b9d12f..828d4f809 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/TrackListActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/TrackListActivity.java @@ -419,6 +419,7 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac protected void onPause() { super.onPause(); trackController.stop(); + trackDataHub.unregisterTrackDataListener(trackDataListener); } @Override diff --git a/MyTracks/src/com/google/android/apps/mytracks/content/TrackDataManager.java b/MyTracks/src/com/google/android/apps/mytracks/content/TrackDataManager.java index e816d2408..4d585d993 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/content/TrackDataManager.java +++ b/MyTracks/src/com/google/android/apps/mytracks/content/TrackDataManager.java @@ -58,7 +58,8 @@ public class TrackDataManager { public void registerListener( TrackDataListener listener, EnumSet trackDataTypes) { if (listenerToTypesMap.containsKey(listener)) { - throw new IllegalStateException("Listener is already registered"); + Log.w(TAG, "Tried to register a listener that is already registered. Ignore."); + return; } listenerToTypesMap.put(listener, trackDataTypes); for (TrackDataType trackDataType : trackDataTypes) { @@ -74,7 +75,7 @@ public class TrackDataManager { public void unregisterListener(TrackDataListener listener) { EnumSet removedTypes = listenerToTypesMap.remove(listener); if (removedTypes == null) { - Log.w(TAG, "Tried to unregister a listener that is not registered."); + Log.w(TAG, "Tried to unregister a listener that is not registered. Ignore."); return; }