From 517a7f5fd03fb89bd6b465013b278c9f281d0b26 Mon Sep 17 00:00:00 2001 From: Adam Cohen Date: Sat, 1 Mar 2014 12:12:59 -0800 Subject: Avoid stripping empty screens if the workspace is still loading (issue 12523285) -> This appears to be what may be causing data loss in some users during update. A certain (seemingly) rare combination of life-cycle events and package events seems to be the culprit (potentially why it's seen at update time). Change-Id: Iea4f8aef012ba80b7ba568e0df264edb9284efbe --- src/com/android/launcher3/Launcher.java | 6 ++++++ src/com/android/launcher3/Workspace.java | 6 ++++++ 2 files changed, 12 insertions(+) (limited to 'src') diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index c87f9e2f0..794417335 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -2078,6 +2078,10 @@ public class Launcher extends Activity return mWorkspaceLoading || mWaitingForResult; } + public boolean isWorkspaceLoading() { + return mWorkspaceLoading; + } + private void resetAddInfo() { mPendingAddInfo.container = ItemInfo.NO_ID; mPendingAddInfo.screenId = -1; @@ -3771,6 +3775,8 @@ public class Launcher extends Activity * Implementation of the method from LauncherModel.Callbacks. */ public void startBinding() { + mWorkspaceLoading = true; + // If we're starting binding all over again, clear any bind calls we'd postponed in // the past (see waitUntilResume) -- we don't need them since we're starting binding // from scratch again diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 50d29ed29..7e0123237 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -863,6 +863,12 @@ public class Workspace extends SmoothPagedView // Log to disk Launcher.addDumpLog(TAG, "11683562 - stripEmptyScreens()", true); + if (isWorkspaceLoading()) { + // Don't strip empty screens if the workspace is still loading + Launcher.addDumpLog(TAG, " - workspace loading, skip", true); + return; + } + if (isPageMoving()) { mStripScreensOnPageStopMoving = true; return; -- cgit v1.2.3