Correctly start and stop listening for repo update events during swap.
This fixes the following bugs: * `BroadcastReceiver` was never being created due to incorrect guard condition `if (pollForUpdatesReceiver != null)` (should have been `== null`). * Called `unregisterReceiver` rather than `registerReceiver`. * Even if it did work, it didn't make an effort to unregister the receiver. In addition, the creation and listening with the `BroadcastReceiver is now done in a way similar to the other swap views: * Create it as a `final` member variable. * `registerReceiver` when view is inflated. * `unregisterReceiver` when view is detached.
This commit is contained in:
parent
cfe2f71e4d
commit
d46efb1d84
@ -118,10 +118,22 @@ public class SwapAppsView extends ListView implements
|
||||
|
||||
displayImageOptions = Utils.getImageLoadingOptions().build();
|
||||
|
||||
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(
|
||||
pollForUpdatesReceiver, new IntentFilter(UpdateService.LOCAL_ACTION_STATUS));
|
||||
|
||||
schedulePollForUpdates();
|
||||
}
|
||||
|
||||
private BroadcastReceiver pollForUpdatesReceiver;
|
||||
/**
|
||||
* Remove relevant listeners/receivers/etc so that they do not receive and process events
|
||||
* when this view is not in use.
|
||||
*/
|
||||
@Override
|
||||
public void onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow();
|
||||
|
||||
LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(pollForUpdatesReceiver);
|
||||
}
|
||||
|
||||
private void pollForUpdates() {
|
||||
if (adapter.getCount() > 1 ||
|
||||
@ -132,37 +144,6 @@ public class SwapAppsView extends ListView implements
|
||||
|
||||
Utils.debugLog(TAG, "Polling swap repo to see if it has any updates.");
|
||||
getActivity().getService().refreshSwap();
|
||||
if (pollForUpdatesReceiver != null) {
|
||||
pollForUpdatesReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
int statusCode = intent.getIntExtra(UpdateService.EXTRA_STATUS_CODE, -1);
|
||||
switch (statusCode) {
|
||||
case UpdateService.STATUS_COMPLETE_WITH_CHANGES:
|
||||
Utils.debugLog(TAG, "Swap repo has updates, notifying the list adapter.");
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(pollForUpdatesReceiver);
|
||||
break;
|
||||
|
||||
case UpdateService.STATUS_ERROR_GLOBAL:
|
||||
// TODO: Well, if we can't get the index, we probably can't swapp apps.
|
||||
// Tell the user somethign helpful?
|
||||
break;
|
||||
|
||||
case UpdateService.STATUS_COMPLETE_AND_SAME:
|
||||
schedulePollForUpdates();
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
// TODO: Unregister this properly, not just when successful (see swithc statement above)
|
||||
LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(pollForUpdatesReceiver);
|
||||
}
|
||||
}
|
||||
|
||||
private void schedulePollForUpdates() {
|
||||
@ -486,4 +467,31 @@ public class SwapAppsView extends ListView implements
|
||||
}
|
||||
}
|
||||
|
||||
private final BroadcastReceiver pollForUpdatesReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
int statusCode = intent.getIntExtra(UpdateService.EXTRA_STATUS_CODE, -1);
|
||||
switch (statusCode) {
|
||||
case UpdateService.STATUS_COMPLETE_WITH_CHANGES:
|
||||
Utils.debugLog(TAG, "Swap repo has updates, notifying the list adapter.");
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
break;
|
||||
|
||||
case UpdateService.STATUS_ERROR_GLOBAL:
|
||||
// TODO: Well, if we can't get the index, we probably can't swapp apps.
|
||||
// Tell the user something helpful?
|
||||
break;
|
||||
|
||||
case UpdateService.STATUS_COMPLETE_AND_SAME:
|
||||
schedulePollForUpdates();
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user