ホーム画面に表示するシンプルなウィジェットを実装しようとしています。私が経験している問題は、ウィジェットをインストールするときに onUpdate が一度しか呼び出されないことです。構成は以下です。注: 更新期間を 20 秒にしないと、バッテリーが消耗することがわかっているためです (テストのみ)。
構成:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="294dp"
android:minHeight="72dp"
android:updatePeriodMillis="20000"
android:initialLayout="@layout/my_custom_app_widget">`
</appwidget-provider>`
マニフェストの抜粋:
<receiver android:name="MyCustomWidgetProvider">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/my_custom_app_widget_info" />
</receiver>
ウィジェットをインストールすると、次のような動作が見られます。私の WidgetProvider クラスでは、onReceive が呼び出され、onEnabled、onReceive、onUpdate の順に呼び出されます。
その後、ウィジェットが表示され、onUpdate が再度呼び出されることはありません。また、onUpdate が呼び出され、上記の XML で設定されたすべて (更新期間など) が正しい場合に、プロバイダーの設定を検査します。