読者です 読者をやめる 読者になる 読者になる

夢とガラクタの集積場

落ちこぼれ三流エンジニアである管理人の夢想=『夢』と、潰えた夢=『ガラクタ』の集積場です。

画面の縦横を切り替えるとonDestroyが呼ばれる?

テストアプリの動作確認を行っていたときにわかったのですが、
Androidって、画面の向きを変えるときに何故かonDestroyが呼ばれてしまうようです。
実際、ブレークポイントをはったらきっちり引っ掛かりました。

呼ばれるメソッドの流れは下記の模様。
。。。普通に終了処理になっているようです。

−onPause()→onStop()→onDestroy() →onCreate()→onStart()→onResume()

かつ、onDestroy→onCreateが呼ばれる際にActivityクラスも再生成されるため、
インスタンス変数に画面方向切替時に持たせたい情報を持たせておいても、
当然クリアされてしまう。
実際、ActivityのObjectIDもonDestroyのタイミングと
onCreateのタイミングでは変わっていました。

ただ、どうやらクラスはロードされっぱなしになるため、
クラス変数にフラグを持たせればどうやら保持される模様。

なので、タイマーの動作を引き継ぐのに必要な変数だけはクラス変数化して、
onCreate時にクラス変数の状態で処理を切り替えれば対応可能。。。なのかな?

ただ、それでもonDestroyが呼ばれてしまう以上Serviceクラスとかも
まるまる再生成されてしまいます。
さすがにonDestroyが呼ばれた際にサービス等をunbindしないわけにはいかないので。

何か効率が悪い気がするんですが。。。。はてさて。