Deferring create hardware layers until we load widget pages. (5330412)

Change-Id: Ia1b5e3ec3db7b7de4b0a76486136ba9df07ff70f
diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java
index 96859d3..6493e97 100644
--- a/src/com/android/launcher2/AppsCustomizePagedView.java
+++ b/src/com/android/launcher2/AppsCustomizePagedView.java
@@ -600,6 +600,19 @@
         }
     }
 
+    @Override
+    protected void onDetachedFromWindow() {
+        super.onDetachedFromWindow();
+
+        // Clean up all the async tasks
+        Iterator<AppsCustomizeAsyncTask> iter = mRunningTasks.iterator();
+        while (iter.hasNext()) {
+            AppsCustomizeAsyncTask task = (AppsCustomizeAsyncTask) iter.next();
+            task.cancel(false);
+            iter.remove();
+        }
+    }
+
     public void setContentType(ContentType type) {
         mContentType = type;
         invalidatePageData(0, (type != ContentType.Applications));
@@ -982,7 +995,6 @@
             prepareLoadWidgetPreviewsTask(page, items, cellWidth, cellHeight, mWidgetCountX);
         }
         PagedViewGridLayout layout = (PagedViewGridLayout) getPageAt(page);
-        layout.createHardwareLayer();
     }
     private void loadWidgetPreviewsInBackground(AppsCustomizeAsyncTask task,
             AsyncTaskPageData data) {
@@ -1073,6 +1085,7 @@
             if (iy > 0) lp.topMargin = mWidgetHeightGap;
             layout.addView(widget, lp);
         }
+        layout.createHardwareLayer();
 
         invalidate();
         forceUpdateAdjacentPagesAlpha();