2012-02-21 10 views
0

は私がAppWidgetProviderのにonUpdate()メソッドの呼び出しの2種類があります知っているように:AppWidgetProviderのonUpdate()メソッドがどのように呼び出されたかを判断できますか?

  1. updatePeriodMillis円の有効期限が切れているとき
  2. 新しいウィジェットをにonUpdateで

()メソッドをホーム画面に追加されたときに、私は最初のケースでいくつかのサービスを開始したいが、2番目にはない。どのようにonUpdate()が呼び出されたかを判断することは可能ですか?

答えて

0

いずれかの状況を示すアップデートブロードキャストであなたに提供されている簡単なフラグはないと思います。それは、すべてのACTION_APPWIDGET_UPDATE放送(したがってごとにonUpdate()の呼び出し)は、すべてまたは更新のために、appwidget IDのサブセットが含まれていても

に注意してください。これらのIDは、ウィジェットのライフサイクルにわたって一定であり、それぞれが削除されるまで同じIDを持ちます。

これは、あなたがあなたのIDを保存し、あなたがonUpdate()呼び出しを受けるたびにそれらを比較できることを意味します。指定された配列内の保存されたレコードにないIDでonUpdate()を実行すると、これが更新された新しいウィジェットインスタンスであることを確認できます。それ以外の場合は古いものの1つ以上です。

レコードをきれいに保つには、プロバイダにもonDeleted()を実装する必要があります。削除したIDをレコードから削除します。それ以外の場合は、ユーザーがウィジェットを削除して新しいインスタンスを追加したときに、同じIDを取得する可能性があります。

+0

ありがとうございます。わたしにはできる。私のアプリでは、それぞれの新しいウィジェットIDは、いくつかのウィジェット設定でSQLiteのテーブル行に格納されます。したがって、必要なチェックは、対応するウィジェットIDを持つ行が存在するかどうかをチェックすることです。ウィジェットがホームスクリーンから削除されたときにテーブル行も削除されます。 – riden

関連する問題