Tentative fix for monkey crash, issue 5556086

Change-Id: Iea6b39133b297dc809e64a20d22156f59950db74
diff --git a/src/com/android/launcher2/PagedView.java b/src/com/android/launcher2/PagedView.java
index d8a8bb2..de45bf5 100644
--- a/src/com/android/launcher2/PagedView.java
+++ b/src/com/android/launcher2/PagedView.java
@@ -490,11 +490,14 @@
             heightSize = maxChildHeight + verticalPadding;
         }
 
-        updateScrollingIndicatorPosition();
-
         setMeasuredDimension(widthSize, heightSize);
 
-        // We can't call getChildOffset/getRelativeChildOffset until we set the measured dimensions
+        // We can't call getChildOffset/getRelativeChildOffset until we set the measured dimensions.
+        // We also wait until we set the measured dimensions before flushing the cache as well, to
+        // ensure that the cache is filled with good values.
+        invalidateCachedOffsets();
+        updateScrollingIndicatorPosition();
+
         if (childCount > 0) {
             mMaxScrollX = getChildOffset(childCount - 1) - getRelativeChildOffset(childCount - 1);
         } else {
@@ -597,7 +600,6 @@
         if (mFirstLayout && mCurrentPage >= 0 && mCurrentPage < getChildCount()) {
             mFirstLayout = false;
         }
-        invalidateCachedOffsets();
     }
 
     protected void screenScrolled(int screenCenter) {
@@ -626,11 +628,17 @@
         // in accordance with any scroll effects.
         mForceScreenScrolled = true;
         invalidate();
+        invalidateCachedOffsets();
     }
 
     protected void invalidateCachedOffsets() {
         int count = getChildCount();
-        if (count == 0) return;
+        if (count == 0) {
+            mChildOffsets = null;
+            mChildRelativeOffsets = null;
+            mChildOffsetsWithLayoutScale = null;
+            return;
+        }
 
         mChildOffsets = new int[count];
         mChildRelativeOffsets = new int[count];