ウィジェットを実装していますが、次の問題に直面しています。
1) onUpdate
構成アクティビティを指定した場合でも、ウィジェットをホーム画面に追加すると呼び出されます。ホーム画面に追加するとすぐに、APPWIDGET_ENABLED
ブロードキャストが送信され、続いAPPWIDGET_UPDATE
て設定アクティビティが開始されます。これはバグですか? onUpdate
構成アクティビティが戻る前に呼び出されているメソッドをどのように理解すればよいですか? 共有設定値を介してそれを行うことはできますが、開発者ガイドに書かれているように動作させたい、つまり、onUpdate
メソッドを呼び出すべきではありません。
2) onUpdate
毎秒呼び出されるわけではありません。つまり、テスト目的で秒にupdatePeriodMillis
設定されています。マニフェスト ファイル内の宣言に何かミスがありましたか? Lint の警告が表示され続けますExported receiver does not need permissionが表示されますが、これは Lint の問題であり、私のせいではないと思います。
編集: 参照ドキュメント内でこれを見つけました:注: updatePeriodMillis で要求された更新は、30 分ごとに複数回配信されることはありません。したがって、指定した頻度でウィジェットが更新されず、時間をミリ秒に変更したのは正しいことです。10000
10
receiver
1800000
3)独自のブロードキャスト アクションをウィジェット プロバイダーに配信したいのですがreceiver
、同じプロバイダー クラスをターゲットとする別のブロックをマニフェストに追加するのは正しいですか、それともアクションintent-filter
を含む内に別のインテント アクションのみを追加する必要がありAPPWIDGET_UPDATE
ますか? ところで、私は 2 番目のreceiver
ブロックにコメントしましたが、それは上記の問題の原因ではありません。 アクションが自分のアプリコードによってのみトリガーされ、他の誰にもトリガーreceiver
されないようにするために、エクスポートされていないと宣言したかったので、別のブロックを作成しました。intent-filter
AndroidManifest.xml
<receiver android:name="MyWidgetProvider"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/my_widget_info" />
</receiver>
<receiver android:name="MyWidgetProvider"
android:exported="false">
<intent-filter>
<action android:name="org.test.mywidget.FORCE_SMALL_WIDGET_UPDATE" />
</intent-filter>
</receiver>
my_widget_info.xml
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="294dp"
android:minHeight="110dp"
android:updatePeriodMillis="1800000"
android:initialLayout="@layout/my_widget_layout"
android:configure="org.test.mywidget.MyWidgetConfiguration"
android:resizeMode="none">
</appwidget-provider>