画面回転などで Activity が作り直される。状態は ViewModel に置いて引き継ぐ。
Android の画面(Activity)は、表示や裏に回るたびに決まった順番で関数が呼ばれます。これがライフサイクルです。
| 関数 | 状態 | やること |
|---|---|---|
onCreate | 作られた | 画面の準備。ViewModel の取得 |
onStart/onStop | 見える/見えなくなった | 位置情報やセンサーなどの開始・停止 |
onResume/onPause | 前面で操作できる/前面でなくなった | カメラなど前面でだけ使うものの開始・停止 |
onDestroy | 壊される | 後片付け。呼ばれない場合もあるので保存には使わない |
構成変更
画面の回転、ダークモードの切り替え、言語の変更、折りたたみ端末を開くなどの構成変更が起きると、Activity は一度壊されて作り直されます。画面の中の変数はここで消えます。これを防ぐのが ViewModel で、構成変更の間も生き残るので、読み込んだデータや入力中の状態はここに置きます。
面接ではこう答える
Android の Activity は、onCreate、onStart、onResume で前面に出て、onPause、onStop で裏に回り、決まった順番で関数が呼ばれます。画面の回転やダークモードの切り替えなどの構成変更が起きると、Activity は一度壊されて作り直されるので、画面の中の変数は消えます。これに備えて、読み込んだデータや入力中の状態は構成変更をまたいで残る ViewModel に置きます。onDestroy は呼ばれないこともあるので、保存には使いません。
Appとの関わり画面回転で状態が消える、裏から戻ると表示がおかしいといった不具合の調査と、画面の設計の基本になります。