Notify WidgetHostView drag content change only at onDraw

Reapply RemoteViews can happen asynchronously. RemoteViews may
not finish reinflation right after setColorResource. Let's call
it onDraw.

Test: Manual

Bug: 182282587

Change-Id: I3653b4c64a5897637181f61096464b75945ab5f5
diff --git a/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java b/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java
index 8df70fb..5c18faf 100644
--- a/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java
+++ b/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java
@@ -19,6 +19,7 @@
 import android.appwidget.AppWidgetProviderInfo;
 import android.content.Context;
 import android.content.res.Configuration;
+import android.graphics.Canvas;
 import android.graphics.Rect;
 import android.graphics.RectF;
 import android.os.Handler;
@@ -120,8 +121,12 @@
         } else {
             super.setColorResources(colors);
         }
+    }
 
-        if (mDragListener != null) {
+    @Override
+    protected void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+        if (mIsInDragMode && mDragListener != null) {
             mDragListener.onDragContentChanged();
         }
     }
diff --git a/src/com/android/launcher3/widget/dragndrop/AppWidgetHostViewDragListener.java b/src/com/android/launcher3/widget/dragndrop/AppWidgetHostViewDragListener.java
index c5e6fbd..66bb363 100644
--- a/src/com/android/launcher3/widget/dragndrop/AppWidgetHostViewDragListener.java
+++ b/src/com/android/launcher3/widget/dragndrop/AppWidgetHostViewDragListener.java
@@ -54,6 +54,8 @@
 
     /** Notifies when there is a content change in the drag view. */
     public void onDragContentChanged() {
-        mDragObject.dragView.invalidate();
+        if (mDragObject.dragView != null) {
+            mDragObject.dragView.invalidate();
+        }
     }
 }