そのため、onUpdate メソッド呼び出し
remoteViews.setRemoteAdapter(id, R.id.listview, intent)
ウィジェットのリストビューにアダプターを適用するため。
ウィジェットのヘッダーには、リストビューで表示されるデータ セットを変更できるボタンがあります (架空の電子メール ウィジェットの受信トレイ、送信トレイ、スター付きなどを考えてください)。そのボタンをクリックすると、ユーザーはアクティビティに移動し、表示するデータ セットを選択できます。選択が行われると、次のコードが実行されます。
Intent intent = new Intent(this, WidgetReceiver.class);
intent.setAction("android.appwidget.action.APPWIDGET_UPDATE");
intent.putExtra("notify", true);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] {R.xml.widget_provider});
sendBroadcast(intent);
これにより、ウィジェットの AppWidgetProvider クラスの onUpdate メソッドが正常に呼び出されます。ただし、さまざまなタイプのデータ セットを切り替えると、設定を 2 ~ 3 回変更すると、setRemoteAdapter
メソッドが機能しなくなります。私はプロセスを広範囲にログに記録しました。サービスを呼び出すことになっているメソッドは、RemoteViewsService.RemoteViewsFactory
クラスをロードしてウィジェットとそのアダプターを設定しますが、これらのことは何もしません。設定を変更した最初の数回は、期待どおりに機能します。しかしその後やめてしまう。
ここで何が起こっているのか、誰にも手がかりがありますか?