Android Lifecycle

android-lifecycle.png

コールバックメソッド

事象

起動時

1 onCreate() Activityが生成された最初の1回だけ呼び出される
2 onStart() Activityが画面に表示されるときに呼び出される
3 onRestart() ActivityがonStop()の後、復活するときに呼び出される。 このあと、onStart()が呼び出される。

起動時だけでなくバックグラウンド→フォアグラウンド時も呼ばれる部分

4 onResume() Activityが前面になる時に呼び出される。
4-a GLSurfaceView::surfaceCreated()
4-b GLSurfaceView::onSurdaceChanged() ビューのサイズが変わった時に呼び出される。つまり端末の縦横が変わった時も呼ばれる

フォアグラウンド→バックグラウンド移行時&アプリ終了時に呼ばれる関数

アプリを起動した状態でホームボタンを押してアプリをバックグラウンドに回した場合
5 onPause() Activityがバックグラウンドに移動するときに呼び出される。ホームボタンを押してアプリを見えなくさせたとき、タスク一覧に回した時
5-a GLSurfaceView::surfaceDestroyed()
6 onStop() Activityが画面から見えなくなる時に呼び出される。ホームボタンを押してアプリを見えなくさせたとき
ここまで。ここ以降は戻るボタンでアプリを終了した時だけ呼ばれる関数です。
タスクキルでアプリを終了したときは呼ばれません
7 onDestroy() Activityが終わる時に呼び出される。戻るボタンでアプリを終了させたとき。

これらのイベントにより3種類のライフタイムが表現される。

3種類のライフタイム

entire lifetime

onCreate()で始まり、onDestroy()で終わる。
バックグラウンドで動くスレッドを使っている場合、onDestroy()で確実に止めること、とある。

visible lifetime

onStart()で始まり、onStop()で終わる。
この間、ユーザーに表示するリソースを管理せよ、とある。

foreground lifetime

onResume()で始まり、onPause()で終わる。
この切り替えは頻繁に起こるので、重い処理をしてはいけない、とある。
つまり、アプリが実際に画面に見えている期間のことっぽい。
activity_lifecycle.png

画面の縦横が変わった時のライフサイクル

1 onConfigurationChanged
2 onSizeChanged
3 onLayout
4 onSizeChanged
5 onLayout

lifecycle

サポートサイト Wikidot.com lifecycle