画面回転時の Android アプリの Activity 処理

Androidアプリは画面回転時にActivityの再生成処理が走る。 そのため、実装によっては例えばユーザーが入力した情報などが画面の回転によって消えてしまう。 途中まで入力した情報が消えてしまうとそれまでの労力が無駄となりユーザーにとってはとても煩わしい。

画面回転時に再生成しないようにする

ViewModelやInstanceStateなどで画面の状態を保持する機能を駆使して、 画面の再生成処理が走っても問題ないようにするのがまともな方向性となる。

しかし、なにかの理由で実装が難しいのであれば画面回転時に再生性しないように設定する方法もある。

参考: 構成の変更を処理する

実装方法

AndroidManifest.xml

AndroidManifest.xml で対象のアクティビティの android:configChanges を設定する。 これだけで設定対象のアクティビティの回転時に再生性が行なわれなくなる。

<activity
  ...
  android:configChanges="orientation|screenSize"
  ...>

さらに回転時になにか処理したい場合

AndroidManifest.xmlandroid:configChanges を設定した場合、 画面回転時にActivityやFragmentの onConfigurationChanged メソッドがコールバックされる。

この onConfigurationChanged メソッドをオーバライドすれば、画面回転時に任意の処理を行なえる。

override fun onConfigurationChanged(newConfig: Configuration) {
    super.onConfigurationChanged(newConfig)

    // 回転時に行いたい処理
}