まず、呼び出している場合は、RemoteViews がウィジェットの状態を完全に表現していることを確認してくださいAppWidgetManager.updateAppWidget()
。すべての保留中のインテントの設定、データの表示など。この状態は、ランチャーがウィジェットを状態から復元したいときに再利用されます。回転が変わるとき。
リモート ビューを更新したいが、完全な RemoteViews 表現を提供したくない場合。既存の remoteView 状態を変更したいだけの場合は、 を使用できますAppWidgetManager.partiallyUpdateAppWidget()
。
この更新は updateAppWidget(int, RemoteViews) とは異なり、渡された RemoteViews オブジェクトはウィジェットの不完全な表現であると認識されているため、AppWidgetService によってキャッシュされません。これらの更新はキャッシュされないため、appWidgetService でキャッシュされたバージョンを使用してウィジェットが復元された場合、restoreInstanceState によって復元されない、変更された状態は保持されないことに注意してください。RemoteViews.showNext(int)、RemoteViews.showPrevious(int)、RemoteViews.setScrollPosition(int, int) および同様のコマンドで使用します。
たとえば、onUpdate 以外のウィジェットの ViewPager を進める場合:
final RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.app_widget_4x2);
remoteViews.showNext(R.id.appWidget_viewFlipper);
appWidgetManager.partiallyUpdateAppWidget(widgetId, remoteViews);