38

ホーム画面に表示するシンプルなウィジェットを実装しようとしています。私が経験している問題は、ウィジェットをインストールするときに 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 で設定されたすべて (更新期間など) が正しい場合に、プロバイダーの設定を検査します。

4

3 に答える 3

70

android:updatePeriodMillis20 秒に設定しましたが、実際の最小時間は 30 分です。そのため、テスト中に更新があるかどうかを確認するために 30 分待っていない場合は、もう少し待つ必要があります。

于 2010-01-16T16:49:37.457 に答える
20
于 2011-08-02T07:00:34.987 に答える
2

duduli が言ったように... alarmManager を使用して Widget クラスにインテントを送信すると、onReceive メソッドで受信されます。方法がわからない場合は、このガイドに従ってください。それは私と他の人のために働いた

于 2017-05-19T09:03:02.927 に答える