0

Observerアプリウィジェットでを使用してデータベースの変更をサブスクライブする必要があります。ドキュメントには、そのような設定の適切な場所はonEnabled()にあると記載されていAppWidgetProviderます。ただし、onEnabled()新しいウィジェットが追加された場合にのみ呼び出されます。アプリが起動し、ウィジェットがすでに存在する場合、アプリは呼び出されず、ウィジェット内のデータは更新されません。アプリの起動時にブロードキャストを送信する必要ACTION_APPWIDGET_ENABLEDがありますか、それともこれを行う別の方法がありますか?

4

2 に答える 2

2

アプリ ウィジェットでオブザーバーを使用して、データベースの変更をサブスクライブする必要があります。

永続的なサービスを実行するつもりでない限り、これは不可能です。これは良い設計パターンではありません。

これが独自のデータベースである場合はAppWidgetManager、データベースの内容を変更するときに使用して、更新をアプリ ウィジェットにプッシュするだけです。

于 2012-05-17T14:04:35.570 に答える
0

CommonsWare は、アプリ ウィジェットの静的オブザーバーを保持するアプローチには欠陥があるという上記の回答で正しいですが、既に認識していた問題を修正するために、アプリの起動時に ACTION_APPWIDGET_ENABLED ブロードキャストを送信します。あまりきれいな方法ではありませんが、うまくいきます。

于 2012-05-18T13:58:11.757 に答える