3

初めてウィジェットを作成しましたが、更新時に設定する必要がある部分に到達するまで、すべてうまくいきました。私の質問を明確にするための私のコードは次のとおりです。

Android マニフェスト:

<receiver android:name="com.whizzapps.stpsurniki.widget.UrnikWidget">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
        </intent-filter>
        <meta-data 
            android:name="android.appwidget.provider"
            android:resource="@xml/app_widget_info"/>
    </receiver>

アプリ ウィジェット プロバイダー XML:

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="80dp"
    android:minHeight="40dp"
    android:updatePeriodMillis="10"
    android:initialLayout="@layout/app_widget"
    android:widgetCategory="home_screen" >
</appwidget-provider>

AppWidgetProvider クラス:

public class UrnikWidget extends AppWidgetProvider {

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {
    super.onUpdate(context, appWidgetManager, appWidgetIds);

    Log.i("TAG", "onUpdate");
    }
}

特定の単語を表示する TextView を含む単純なウィジェットを作成しましたが、ウィジェットの操作方法をまだ学んでいるので、ロジックはまだありません。ご覧のとおり、onUpdate が実際にいつ呼び出されるかを確認するために log.i を作成しました。私の問題は、ウィジェットをホーム画面に初めて配置したときにのみ呼び出されることです。

10 ミリ秒の更新間隔は短すぎて、バッテリーの消耗のために使用すべきではないことはわかっていますが、テスト目的のためだけに 10 ミリ秒を使用しています。

onUpdate が 10 ミリ秒ごとではなく 1 回しか実行されないのはなぜですか? また、特定の時間にのみ更新する必要がある場合、ウィジェットを更新する最良の方法は何ですか? ウィジェットを午前 7 時、午前 8 時、午後 3 時に更新する必要があるとします。これは可能ですか?ありがとうございました!

4

1 に答える 1