Androidのライフサイクル
Androidのコンポーネントにはライフサイクルがあります。 ライフサイクルはインテントへの応答によるインスタンスの生成から、そのインスタンスが破棄されるまでの間の 状態変化を意味します。 ここでは、コンポーネントの中からアクティビティのライフサイクルについて説明します。
アクティビティのライフサイクルには実行中、一時停止、停止の3種類の状態があります。
- 状態が実行中のアクティビティは、そのアクティビティが画面の前面に表示されていてユーザが操作可能になっている状態のことです。
- 状態が一時停止のアクティビティは、他のアクティビティが前面に表示されていて、そのアクティビティが透明か全画面表示でないかのどちらかになっている状態のことです。 一時停止中のアクティビティは停止前の状態を保存していていつでも実行中になれますが、メモリが不足した場合は強制終了させられる可能性があります。
- 状態が停止のアクティビティは、他のアクティビティの下に隠れて完全に見えなくなった状態のことです。このアクティビティも停止前の状態を保存していますが、 メモリが不足した場合は優先的に強制終了させられます。
アクティビティの状態が変化すると、Androidはアクティビティが用意している
以下のメソッドを呼び出すことで変更をアクティビティに通知します。
void onCreate(Bundle savedInstanceState)
void onStart()
void onRestart()
void onResume()
void onPause()
void onStop()
void onDestroy()
これらのメソッドを利用することで、アクティビティのライフサイクル全体を定義することができ、
次の3つの遷移からなるアクティビティのライフサイクルを監視することができます。
- アクティビティのライフタイム全体として、 「onCreate()」でインスタンスが生成されて「onDestroy()」で停止します。
- アクティビティの可視ライフタイムとして、 ユーザが画面上でアクティビティを見ることができる期間は、 「onStart()」の呼び出しで始まり「onStop()」の呼び出しで終了します。
- アクティビティのフォアグランドライフタイムとして、 アクティビティが他のアクティビティよりも前面に表示されてユーザと対話可能な期間は 「onResume()」の呼び出しで始まり、「onPause()」で終わります。
次の図に、これらのすべての遷移を表したライフサイクルを示します。
次の表で各メソッドについて説明します。
メソッド | 説明 | 強制終了 | 次 |
---|---|---|---|
onCreate() | アクティビティが最初に生成されるときに呼び出されます。 このメソッドが呼ばれた後には必ずonStart()を呼び出します。 |
不可 | onStart() |
onStart() | アクティビティがユーザから見えるようになる直前に呼ばれます。 このメソッドが呼ばれた後、アクティビティが画面の前面に表示された場合はonResume()が、 他のアクティビティの後ろに隠れる場合はonStop()を呼び出します。 |
不可 | onResume() または onStop() |
onRestart() | 停止しているアクティビティが再開する直前に呼ばれます。 このメソッドが呼ばれた後には必ずonStart()を呼び出します。 |
不可 | onStart() |
onResume() | アクティビティがユーザと対話を開始する直前に呼び出されます。 このメソッドが呼ばれた後には必ずonPause()を呼び出します。 |
不可 | onPause() |
onPause() | システムが他のアクティビティを開始しようとした時に呼び出されます。
保存されていない変更の保存やCPUを大量に消費する処理を停止する場合に使用されます。
このメソッドが終了するまで次のアクティビティが開始されないので、
できるだけ素早く実行する必要があります。 このメソッドが呼ばれた後は、このアクティビティが実行中になる場合はonResume()が、 ユーザから見えなくなる場合はonStop()が呼び出されます。 |
可能 | onResume() または onStop() |
onStop() | アクティビティがユーザから見えなくなったときに呼び出されます。
見えなくなる状況としては、アクティビティが破棄された場合や、
他のアクティビティによってこのアクティビティが隠された場合があります。 このメソッドが呼ばれた後は、アクティビティがユーザとの対話に戻った場合はonRestart()が、 破棄される場合はonDestroy()が呼び出されます。 |
不可 | onRestart() または onDestroy() |
onDestroy() | アクティビティが破棄される前に呼び出されます。 これがアクティビティが受け付ける最後の呼び出しとなります。 このメソッドが呼び出される状況は、アクティビティが正常終了する場合、メモリ領域を確保するために アクティビティを強制終了する場合が考えられます。 | 可能 | なし |