Fix issue 1153.

In TrackListActivity, unregister listener in onPause.
This commit is contained in:
Jimmy Shih
2012-09-19 17:56:30 -07:00
parent 02d9d929b2
commit 7e2fa82f3c
2 changed files with 4 additions and 2 deletions
@@ -419,6 +419,7 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac
protected void onPause() { protected void onPause() {
super.onPause(); super.onPause();
trackController.stop(); trackController.stop();
trackDataHub.unregisterTrackDataListener(trackDataListener);
} }
@Override @Override
@@ -58,7 +58,8 @@ public class TrackDataManager {
public void registerListener( public void registerListener(
TrackDataListener listener, EnumSet<TrackDataType> trackDataTypes) { TrackDataListener listener, EnumSet<TrackDataType> trackDataTypes) {
if (listenerToTypesMap.containsKey(listener)) { 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); listenerToTypesMap.put(listener, trackDataTypes);
for (TrackDataType trackDataType : trackDataTypes) { for (TrackDataType trackDataType : trackDataTypes) {
@@ -74,7 +75,7 @@ public class TrackDataManager {
public void unregisterListener(TrackDataListener listener) { public void unregisterListener(TrackDataListener listener) {
EnumSet<TrackDataType> removedTypes = listenerToTypesMap.remove(listener); EnumSet<TrackDataType> removedTypes = listenerToTypesMap.remove(listener);
if (removedTypes == null) { 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; return;
} }