読者です 読者をやめる 読者になる 読者になる

むらかみの雑記帳

Android とか iOS とかソフトウェア開発に関するネタ帳

ActivityのライフサイクルをUMLのステートマシン図で描いてみた

Android Dev Guide にある Activity Lifecycle に、Activity のライフサイクルの図があるのだけど、なんだか妙にわかりにくい。遷移時にどのようなイベントが発生するのかは書いてあるんだけど、肝心の状態が書かれていないからだ。

そんなわけで、UMLのステートマシン図を描いてみたよ。

f:id:tmurakam:20101113142256p:image

これでだいぶ分かりやすくなった。一応解説。

まず、基本的な状態は3つある。

  1. Active/Running : Activity が可視、フォアグランドにある状態。
  2. Paused : Activity は可視だけど、フォアグランドではない状態。他の Activity が上に重なっていて、一部がみえている状態。
  3. Stopped : 不可視な状態。他の Activity が上に完全にかぶっていて見えない状態。

また、LifeTimeという用語もあって、これは以下のようになっている。

  1. Entire Lifetime : Activity が存在している期間。上記3状態をすべて含む。
  2. Visible Lifetime : Activity が可視の期間。Active/Running と Paused 状態が含まれる。
  3. Foreground Lifetime : Activity がフォアグランドの期間。上記Active/Running 状態と同じ。

あと、Killable というのがあるが、これは他のアプリがメモリを必要としたときに強制的に殺されるかどうか、を表す。Paused と Stopped 状態は Killable だ。

上記のステートマシン図には、上記の状態と、遷移時に発生するイベントをすべて記載してある。ほとんどのイベントは Entry / Exit アクションを使って書いてあるので、わかりやすくなっていると思う。