Observer
アプリウィジェットでを使用してデータベースの変更をサブスクライブする必要があります。ドキュメントには、そのような設定の適切な場所はonEnabled()
にあると記載されていAppWidgetProvider
ます。ただし、onEnabled()
新しいウィジェットが追加された場合にのみ呼び出されます。アプリが起動し、ウィジェットがすでに存在する場合、アプリは呼び出されず、ウィジェット内のデータは更新されません。アプリの起動時にブロードキャストを送信する必要ACTION_APPWIDGET_ENABLED
がありますか、それともこれを行う別の方法がありますか?
1320 次
2 に答える
2
アプリ ウィジェットでオブザーバーを使用して、データベースの変更をサブスクライブする必要があります。
永続的なサービスを実行するつもりでない限り、これは不可能です。これは良い設計パターンではありません。
これが独自のデータベースである場合はAppWidgetManager
、データベースの内容を変更するときに使用して、更新をアプリ ウィジェットにプッシュするだけです。
于 2012-05-17T14:04:35.570 に答える
0
CommonsWare は、アプリ ウィジェットの静的オブザーバーを保持するアプローチには欠陥があるという上記の回答で正しいですが、既に認識していた問題を修正するために、アプリの起動時に ACTION_APPWIDGET_ENABLED ブロードキャストを送信します。あまりきれいな方法ではありませんが、うまくいきます。
于 2012-05-18T13:58:11.757 に答える