テストアプリの動作確認を行っていたときにわかったのですが、
Androidって、画面の向きを変えるときに何故かonDestroyが呼ばれてしまうようです。
実際、ブレークポイントをはったらきっちり引っ掛かりました。
呼ばれるメソッドの流れは下記の模様。
。。。普通に終了処理になっているようです。
-onPause()→onStop()→onDestroy() →onCreate()→onStart()→onResume()
かつ、onDestroy→onCreateが呼ばれる際にActivityクラスも再生成されるため、
インスタンス変数に画面方向切替時に持たせたい情報を持たせておいても、
当然クリアされてしまう。
実際、ActivityのObjectIDもonDestroyのタイミングと
onCreateのタイミングでは変わっていました。
ただ、どうやらクラスはロードされっぱなしになるため、
クラス変数にフラグを持たせればどうやら保持される模様。
なので、タイマーの動作を引き継ぐのに必要な変数だけはクラス変数化して、
onCreate時にクラス変数の状態で処理を切り替えれば対応可能。。。なのかな?
ただ、それでもonDestroyが呼ばれてしまう以上Serviceクラスとかも
まるまる再生成されてしまいます。
さすがにonDestroyが呼ばれた際にサービス等をunbindしないわけにはいかないので。
何か効率が悪い気がするんですが。。。。はてさて。
画面の縦横を切り替えるとonDestroyが呼ばれる?
登録:
コメントの投稿 (Atom)
0 コメント:
コメントを投稿