diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher2/Launcher.java | 6 | ||||
-rw-r--r-- | src/com/android/launcher2/LauncherModel.java | 12 |
2 files changed, 13 insertions, 5 deletions
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index 22ce003f4..85ffbe7a7 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -1495,6 +1495,11 @@ public final class Launcher extends Activity 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 @@ public final class Launcher extends Activity TextKeyListener.getInstance().release(); - mModel.stopLoader(); unbindDesktopItems(); diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java index d5505c5fa..7cfab2a17 100644 --- a/src/com/android/launcher2/LauncherModel.java +++ b/src/com/android/launcher2/LauncherModel.java @@ -1301,7 +1301,8 @@ public class LauncherModel extends BroadcastReceiver { 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 @@ public class LauncherModel extends BroadcastReceiver { 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 @@ public class LauncherModel extends BroadcastReceiver { 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 @@ public class LauncherModel extends BroadcastReceiver { 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(); } } |