Android 実機を初めて触った。
そしてよく 回転する 事実を知った。回転はエミュレーター上で全く検証して
おらず、回転させると画面表示がなくなる。
エミュレーター上で回転させるには Ctrl + F12
調べてみると OnDestroy() が 毎回呼ばれる。
SurfaceDestroy() や OnPause() / onStop() は色んなタイミングで呼ばれる事は
確認取れてたので、いつでも再開できる設計にしてたのだが…
アクティビティの終了を示す OnDestory() がこれ程頻繁に呼ばれるとは
思わなかった。
どうしようか。
onDestory() 呼ばれても静的変数( static )は有効なのですが、
動的変数( dynamic )は破棄される。
画面回転するたびに、VirtualMachine を再起動する設計は嫌過ぎる。
GUI コンポーネントは onSaveInstanceState() / onRestoreInstanceState() で
いけるみたいだが、SurfaceView も同じ?
Parcelable 自体は Java のシリアライズみたいなもので、大きな違いは永続化が
目的ではないとか。
対策を施さないと… static の SurfaceView の場合、getHolder() で再取得した
オブジェクトに lockCanvas() を行うと NULL が返る。
それもそのハズ。surfaceCreated() が呼ばれない…調べるか。
0 コメント:
コメントを投稿