/var/log/messages

debugging with sixth sense

ViewGroup を追加する場合の SurfaceView の挙動

LinearLayout に addView したりとか ListView な adapter に add して getView でな場合に SurfaceView (というか SurfaceHolder?) の幅も高さも 0 になってて SurfaceHolder.Callback#surfaceCreated が呼び出されない、という不具合発現。

適当な値を SurfaceHolder#setFixedSize で設定したら呼び出されるようになったのですが、この方法が妥当なのかどうかさえ謎。こうなってくるときちんとソース読まなきゃ駄目だなぁ。

もう少し

この件、まだまだ落とし穴がありそう。

  • SurfaceHolder.Callback を実装したカスタムな SurfaceView 作ってみたのだけれど、onPause やら onDestroy の時の SurfaceView に乗せてる MediaPlayer の後始末が微妙
  • ListView の場合も後始末が微妙
  • とは言え、LinearLayout の addView するのは表示する SurfaceView の数によって OOM ってしまう危険性が大

Comments