Removing old Launcher callback reference from LauncherModel when the activity is destroyed.
Change-Id: I288d2bd7e305c2cf9bdeec5357997d566d5205b7
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index eb533fe..2d63b3f 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -1495,6 +1495,11 @@
public void onDestroy() {
super.onDestroy();
+ // Stop callbacks from LauncherModel
+ LauncherApplication app = ((LauncherApplication) getApplication());
+ mModel.stopLoader();
+ app.setLauncher(null);
+
try {
mAppWidgetHost.stopListening();
} catch (NullPointerException ex) {
@@ -1506,7 +1511,6 @@
TextKeyListener.getInstance().release();
- mModel.stopLoader();
unbindDesktopItems();
diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java
index d5505c5..7cfab2a 100644
--- a/src/com/android/launcher2/LauncherModel.java
+++ b/src/com/android/launcher2/LauncherModel.java
@@ -1301,7 +1301,8 @@
final ArrayList<ApplicationInfo> addedFinal = added;
mHandler.post(new Runnable() {
public void run() {
- if (callbacks == mCallbacks.get()) {
+ Callbacks cb = mCallbacks != null ? mCallbacks.get() : null;
+ if (callbacks == cb && cb != null) {
callbacks.bindAppsAdded(addedFinal);
}
}
@@ -1311,7 +1312,8 @@
final ArrayList<ApplicationInfo> modifiedFinal = modified;
mHandler.post(new Runnable() {
public void run() {
- if (callbacks == mCallbacks.get()) {
+ Callbacks cb = mCallbacks != null ? mCallbacks.get() : null;
+ if (callbacks == cb && cb != null) {
callbacks.bindAppsUpdated(modifiedFinal);
}
}
@@ -1322,7 +1324,8 @@
final ArrayList<ApplicationInfo> removedFinal = removed;
mHandler.post(new Runnable() {
public void run() {
- if (callbacks == mCallbacks.get()) {
+ Callbacks cb = mCallbacks != null ? mCallbacks.get() : null;
+ if (callbacks == cb && cb != null) {
callbacks.bindAppsRemoved(removedFinal, permanent);
}
}
@@ -1332,7 +1335,8 @@
mHandler.post(new Runnable() {
@Override
public void run() {
- if (callbacks == mCallbacks.get()) {
+ Callbacks cb = mCallbacks != null ? mCallbacks.get() : null;
+ if (callbacks == cb && cb != null) {
callbacks.bindPackagesUpdated();
}
}