2011年5月29日日曜日

Android Widgetのライフサイクルについて要点だけ

Android App Widgetのライフサイクルイベントは4つ。公式ドキュメント読んだだけではいまいち分かりづらかったので調べてみたメモ。

(1)onEnabled(Context context)
一つ目のウィジェットがホームに追加されるとき。

(2)onUpdate(Context context, AppWidgetmanager appWidgetManager, int[] appWidgetIds)
ウィジェットがホームに追加されるとき。一つ目のときはonEnabledの直後に呼ばれる。2つ目以降(=同じウィジェットが既にホームに置かれている場合)はこのonUpdateだけがコールされる。
appWidgetIdsには、アップデート対象のウィジェットのIDが入ってる。なので、widgetの追加時には基本的に1つのIDの配列で、定期更新時には2つ以上のIDが入ってる可能性があるっていうことみたい。

(3)onDeleted(Context context, int[] appWidgetIds)
ウィジェットがホームから削除されるとき。他にウィジェットが残っているとき(=同じウィジェットがまだホームに置かれている場合)はこのonDeletedだけが呼ばれる。

(4)onDisabled(Context context)
ホームから最後のウィジェットが削除されるとき、onDeletedの直後にコールされる。

もういっこonReceivedは上記3つが結局コールされるので、通常はあんまり気にしなくて大丈夫みたい。以下4つ以外のBroadcastをなんとかしたい時にきにすれば良い。

  • ACTION_APPWIDGET_DELETED→onDeleted
  • ACTION_APPWIDGET_DISABLED→onDisabled
  • ACTION_APPWIDGET_ENABLED→onEnabled
  • ACTION_APPWIDGET_UPDATE→onUpdate

1 件のコメント:

  1. ウィジェットのライフサイクルを調べていました。
    非常に参考になります。

    http://android.wktk.so/

    返信削除