LoginSignup
4
15

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-12-06

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を再起動させない方法

4
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
15