端末の向きによって画面が回転する場合など画面サイズが変わった場合、Activityは一度破棄され新たに作り直される。
単純なActivityであれば向きを考える必要がなく便利なのかもしれないが、初期化だったり別スレッドを使ったりと複雑なことをしようした場合、Activityが作り直されるのは都合が悪い。
以下の方法で同じActivityインスタンスを使い続けることができる。
まずは、AndroidManifest.xmlに設定を書く。
activity要素の、android:configChanges属性を設定する。
(Activityの特定挙動を自前で実装するという意味みたい)
-
画面回転時 =orientation
-
キーボードの引き出し時=keyboardHidden
詳細なリファレンスはこちら
http://developer.android.com/intl/ja/guide/topics/manifest/activity-element.html
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="xxx.xxx.xxxx.test"> <application> <activity android:name=".MyActivity" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden"> : </activity> </application> </manifest>
続いてActivityのonConfigurationChangedメソッドをオーバーライドして、向きが変わった場合の処理を自前で実装してあげればOK。
コメントをお書きください