diff --git a/F-Droid/src/org/fdroid/fdroid/views/swap/SwapConnecting.java b/F-Droid/src/org/fdroid/fdroid/views/swap/SwapConnecting.java index a14c82021..387ffdceb 100644 --- a/F-Droid/src/org/fdroid/fdroid/views/swap/SwapConnecting.java +++ b/F-Droid/src/org/fdroid/fdroid/views/swap/SwapConnecting.java @@ -61,13 +61,24 @@ public class SwapConnecting extends LinearLayout implements SwapWorkflowActivity } }); - // TODO: Unregister correctly, not just when being notified of completion or errors. LocalBroadcastManager.getInstance(getActivity()).registerReceiver( repoUpdateReceiver, new IntentFilter(UpdateService.LOCAL_ACTION_STATUS)); LocalBroadcastManager.getInstance(getActivity()).registerReceiver( prepareSwapReceiver, new IntentFilter(SwapWorkflowActivity.PrepareSwapRepo.ACTION)); } + /** + * Remove relevant listeners/receivers/etc so that they do not receive and process events + * when this view is not in use. + */ + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + + LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(repoUpdateReceiver); + LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(prepareSwapReceiver); + } + private final BroadcastReceiver repoUpdateReceiver = new ConnectSwapReceiver(); private final BroadcastReceiver prepareSwapReceiver = new PrepareSwapReceiver();