Merge "Don't let old Launcher activity interfere with new one" into ub-now-porkchop

This commit is contained in:
Adam Cohen 2014-09-30 23:03:40 +00:00 committed by Android (Google) Code Review
commit 52077b7a95
2 changed files with 14 additions and 3 deletions

View File

@ -1134,7 +1134,9 @@ public class Launcher extends Activity
@Override
public Object onRetainNonConfigurationInstance() {
// Flag the loader to stop early before switching
mModel.stopLoader();
if (mModel.isCurrentCallbacks(this)) {
mModel.stopLoader();
}
if (mAppsCustomizeContent != null) {
mAppsCustomizeContent.surrender();
}
@ -1997,8 +1999,13 @@ public class Launcher extends Activity
// Stop callbacks from LauncherModel
LauncherAppState app = (LauncherAppState.getInstance());
mModel.stopLoader();
app.setLauncher(null);
// It's possible to receive onDestroy after a new Launcher activity has
// been created. In this case, don't interfere with the new Launcher.
if (mModel.isCurrentCallbacks(this)) {
mModel.stopLoader();
app.setLauncher(null);
}
try {
mAppWidgetHost.stopListening();

View File

@ -1385,6 +1385,10 @@ public class LauncherModel extends BroadcastReceiver
return isLaunching;
}
public boolean isCurrentCallbacks(Callbacks callbacks) {
return (mCallbacks != null && mCallbacks.get() == callbacks);
}
public void startLoader(boolean isLaunching, int synchronousBindPage) {
startLoader(isLaunching, synchronousBindPage, LOADER_FLAG_NONE);
}