画面の向きを切り替えた時の問題
Android 端末では、縦向きと横向きの2種類の表示方法があります。
アプリ起動中にも縦と横とで切り替えができるのですが、縦を横にしたとき画面情報が消える問題が発生しました。
今回はこの原因と解決方法を説明します。
画面の向きを切り替えたときの処理手順
画面向きを変更した場合、[実行中] → [一時停止] → [破棄] まで進んでから画面の向きが変更されます。
変更された画面は、[起動] → [実行中] まで進む訳ですが。オブジェクトが破棄されたため、画面切り替え以前のオブジェクト情報が全て初期かされています。
オブジェクト情報の初期化を回避する手順
再起動させなければいいので、onConfigurationChanged() メソッドをオーバーライドさせます。
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); }
また、AndroidManifest.xml ファイルを以下のように android:configChanges 属性を追記します。
<activity android:name=".ProjectName" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden">
これにより、画面向きを変更したときに [破棄] → [起動] の流れが無くなり、代わりにオーバーライドしたメソッドが呼ばれるようになります。
まとめ
これで画面内容が消える問題も解決できました。Android 側での内部処理を十分理解してないとハマってしまいますね。
参考書籍
- 作者: Ed Burnette,日本Androidの会(監訳),長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/05/18
- メディア: 大型本
- 購入: 15人 クリック: 304回
- この商品を含むブログ (55件) を見る
- 作者: 江川崇,竹端進,山田暁通,麻野耕一,山岡敏夫,藤井大助,藤田泰介,佐野徹郎
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2009/07/01
- メディア: 大型本
- 購入: 20人 クリック: 469回
- この商品を含むブログ (58件) を見る