Help us understand the problem. What is going on with this article?

Android 画面回転時にActivityを再起動させない方法

More than 1 year has passed since last update.

Android 画面回転時にActivityを再起動させない方法

最近記事を書いていなかったので、自分のメモブログから一本投稿。古いネタですけど。

Androidは画面を回転させるとActivityを再描画する

Androidは画面を回転させた際に画面の再描画が走ります。
Activityが再起動するわけなのですが、ダイアログなどを出してる途中でActivityの再起動が走るとWindow leek Exceptionが起こってしまい、アプリがクラッシュしてしまいます。

この画面回転時のActivityの再起動を防ぐ方法があります。

Activityの再描画を防ぐ方法

AndroidManifest.xmlで画面の再描画をさせたくないActivityに対して以下を加えます。

<activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:uiOptions="splitActionBarWhenNarrow"
            android:configChanges="orientation|screenSize"><!--←コレ-->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

これを書くことによって
onDestroy→onCreateの代わりに、
Activity#onConfigurationChanged() が呼ばれるようになります。

画面回転時に何か処理をさせたい場合はここにその処理を書くようです。

@Override
public void onConfigurationChanged(Configuration newConfig) {
   super.onConfigurationChanged(newConfig);
   Log.d("TEST", "onConfigrationChanged()");
}

画面の再描画を防ぐだけなら↑は必要ないです。

引用元

Android 画面回転時にActivityを再起動させない方法

shotakeu
お疲れ様です。 ハイパーポエムクリエイターです。 日々ポエムを綴っております。
https://wandering-engineer.tech
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away