向き変更時のアクティビティ再スタート防止

By mita
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

ある時、画面を横にすると縦画面での編集内容が全て消えてしまうことがありました。

activity_restart

調べてみたところ、次のような記述をみつけました。

通常は、コンフィグレーション(画面の向き、入力デバイス、言語など)が変更されると、Activityは、ライフサイクルプロセス(onPause(), onStop(), そして onDestroy() )に従って終了します。

要するに、画面の向き等が変更された場合、Activityが一旦終了して再スタートされますよ、とのことみたいです。
ログを出してみると、向き変更時にonCreateが呼ばれていました。


向きを固定にしてしまえば問題ないのですが、固定したくないときもあります。
そんな時は、AndroidManifest.xmlのactivityにandroid:configChanges属性を追加することで回避できます。

回避されるのは設定されているコンフィグレーションが変更された場合に限ります。
詳細はデベロッパーサイトで確認ください。
http://developer.android.com/intl/ja/guide/topics/manifest/activity-element.html#config


またこの設定をした場合、アクティビティが再スタートされる代わりにonConfigurationChangedが呼ばれることになります。
変更時に何か処理をしたい場合はここに記述することになります。


ちなみに、横画面時にロックをすると縦画面にしたことになるようです。
(ロック画面が縦のため?)

関連する投稿


2 Tweets

Leave a Reply

Additional comments powered by BackType