Androidのライフサイクルについて

2019年5月17日

本稿ではAndroidのライフサイクル(Activity)について説明していきますので、

参考までにご覧ください。

 

 

Androidのライフサイクルとは?

ライフサイクル自体はあるモノが市場に投入されてから姿を消すまでの流れを表します。

従ってActivityのライフサイクルとは、Activity生成から廃棄の一連の流れのことを指します。

 

Activityのライフサイクルメソッドについて

Activityのライフサイクルには各状態で必ずコールされるライフサイクルメソッドと呼ばれるものがあります。

onCreate、onResume等がその一例です。

 

ライフサイクルメソッドは開発者が意識していなくても

Activity生成から廃棄の流れの中で必ず呼ばれるメソッドのため、

開発者は各メソッドがどの状態でコールされるか把握し正しく実装を行う必要があります。

 

標準ライフサイクル

Android DevelopersではActivityのライフサイクルについて以下のように説明しています。

図だけでは分かりにくいかと思いますので次の項で、

テキストベースで纏めましたのであわせてご覧になってください。

 

各ライフサイクルメソッドの概要

以下に各メソッドの役割を記載致します。

 

コールの順番 メソッド名 状態 概要
1  onCreate 画面の初期化 画面が可視化される前の初期処理を行う
2 onStart 画面の初期化後の処理
(ユーザに非表示)
画面が可視化される直前の処理を行う
3 onResume 画面の表示処理(ユーザに表示) 画面が可視化される状態の処理を行う
4 onPause 画面の非表示準備処理
(ユーザに表示されているが操作はできない)
画面が別の画面へ遷移する際の処理を行う
5 onStop 画面の非表示処理
(ユーザに表示されているが操作はできない)
画面が見えなくなった際の処理を行う
6 onDestroy 画面の廃棄処理(ユーザに非表示) 画面が破棄される直前の処理を行う


各ライフサイクルメソッドのコール契機

oncreate

  • アクティビティが作成された際に、一度だけ初期化されるべきリソースの初期化を行う。
  • 回転などによって破棄されて作り直される場合、前の状態が保存されていれば、onCreate()の引数であるBundleオブジェクトが渡される。

onStart

  • Activityをユーザーに見せる直前に呼び出される
  • onStart()が呼び出されてからonStop()が呼び出されるまでがユーザーに画面が表示されている期間なので、ここで、バックグラウンド処理のコールバックの登録などを行ったりする。
    例えばonStart()メソッドの中でブロードキャストレシーバを登録して、UIに影響を与える変化を起こす通知がこないか監視するようにし、onStop()でその登録を解除する。

onResume

  • Activityが復帰する時や、新しいインテントが届いた時に呼び出される
  • Activityが最前面に来ていて、ユーザーと対話状態になる直前に重い処理を
    挟むと表示されてしばらく操作できないということになるので、
    ここで呼び出す処理は可能な限り軽くすることを推奨。

onPause

  • Androidが別のActivityへ遷移しようとするタイミングで呼び出される。
  • ユーザーとの相互作用を停止するための準備。

onStop

  • Activityがユーザーから見えなくなったときに呼び出される
  • 上記が起こるのは、Activityが破棄される場合と、別のActivityに隠される場合がある
  • onStart()メソッドの中で設定した、UIに変化を起こすバックグラウンド処理の監視などを解除する。

onDestroy

  • Activityが破棄される直前に呼び出される。
  • onCreateで取得したリソースを解放するのが一般的。