diff options
| author | 2010-05-04 12:54:54 -0700 | |
|---|---|---|
| committer | 2010-05-04 12:54:54 -0700 | |
| commit | 6cb9d189a8ff46b515cd6251dc16f68db90962c5 (patch) | |
| tree | 54ed67f55a761640e6152cde85641f5c109ebd53 | |
| parent | 4929e5a58c2723cbb37df21d2765f0b5a2610f38 (diff) | |
| parent | 07779ac16ee5d30a1563b52a157510128bfec720 (diff) | |
am 07779ac1: am 77da7312: am f140be6c: Call into app widget hosts when the provider is updated.
| -rw-r--r-- | core/java/android/appwidget/AppWidgetHost.java | 10 | ||||
| -rw-r--r-- | core/java/android/appwidget/AppWidgetHostView.java | 16 |
2 files changed, 23 insertions, 3 deletions
diff --git a/core/java/android/appwidget/AppWidgetHost.java b/core/java/android/appwidget/AppWidgetHost.java index 456ceb63bdee..88adabd042b3 100644 --- a/core/java/android/appwidget/AppWidgetHost.java +++ b/core/java/android/appwidget/AppWidgetHost.java @@ -231,8 +231,14 @@ public class AppWidgetHost { /** * Called when the AppWidget provider for a AppWidget has been upgraded to a new apk. */ - @SuppressWarnings({"UnusedDeclaration"}) protected void onProviderChanged(int appWidgetId, AppWidgetProviderInfo appWidget) { + AppWidgetHostView v; + synchronized (mViews) { + v = mViews.get(appWidgetId); + } + if (v != null) { + v.updateAppWidget(null, AppWidgetHostView.UPDATE_FLAGS_RESET); + } } void updateAppWidgetView(int appWidgetId, RemoteViews views) { @@ -241,7 +247,7 @@ public class AppWidgetHost { v = mViews.get(appWidgetId); } if (v != null) { - v.updateAppWidget(views); + v.updateAppWidget(views, 0); } } } diff --git a/core/java/android/appwidget/AppWidgetHostView.java b/core/java/android/appwidget/AppWidgetHostView.java index 792b2897df67..5375193d823f 100644 --- a/core/java/android/appwidget/AppWidgetHostView.java +++ b/core/java/android/appwidget/AppWidgetHostView.java @@ -46,6 +46,8 @@ public class AppWidgetHostView extends FrameLayout { static final boolean LOGD = false; static final boolean CROSSFADE = false; + static final int UPDATE_FLAGS_RESET = 0x00000001; + static final int VIEW_MODE_NOINIT = 0; static final int VIEW_MODE_CONTENT = 1; static final int VIEW_MODE_ERROR = 2; @@ -150,7 +152,16 @@ public class AppWidgetHostView extends FrameLayout { * AppWidget provider. Will animate into these new views as needed */ public void updateAppWidget(RemoteViews remoteViews) { - if (LOGD) Log.d(TAG, "updateAppWidget called mOld=" + mOld); + updateAppWidget(remoteViews, 0); + } + + void updateAppWidget(RemoteViews remoteViews, int flags) { + if (LOGD) Log.d(TAG, "updateAppWidget called mOld=" + mOld + " flags=0x" + + Integer.toHexString(flags)); + + if ((flags & UPDATE_FLAGS_RESET) != 0) { + mViewMode = VIEW_MODE_NOINIT; + } boolean recycled = false; View content = null; @@ -323,6 +334,9 @@ public class AppWidgetHostView extends FrameLayout { * Inflate and return the default layout requested by AppWidget provider. */ protected View getDefaultView() { + if (LOGD) { + Log.d(TAG, "getDefaultView"); + } View defaultView = null; Exception exception = null; |