Intentによる、Activityの切り替え

カメラアプリを作っているのだが、定石として、SurfaceViewを2枚重ねる方法をとる。
1枚目は、カメラのプレビュー映像を表示、
2枚目は、カメラの操作や、画像フレームなどの表示、である。

ここまでは以前作っていたのだが、カメラアプリ単体として作っていた。
今は、ミニゲームの1つに、カメラを使うものがる、という体で作っているので、
ずっとカメラのプレビューsurfaceを出していくわけにもいかない。

が、プログラムの途中で、SurfaceViewを消したり、出したりなどのレイアウトにかかわる処理は、そう簡単にできないようになっている。

というわけで、これまたカメラアプリでは定石っぽい、Intentで、Activityを切り替える方法を使った。
通常アプリ用にレイアウトを組んだActivityと、カメラ用のレイアウトのActivityを切り替えるわけだ。

今回初めて使ったんだが、いや、面倒だわ(苦笑
Intentの切り替え自体は、めっちゃ楽にできるよ。でも、シーンのつなぎのほうがね…。

Activityのライフサイクルとして、onStartやOnPause、onResumeなどがいろいろあるが、
基本、onStopが呼ばれるまで動作している。

Intent切替を実行すると、次のActivityが起動して、onStart、onResumeなどが呼ばれるのだが、その後しばらくしてから、切り替え元の、onStopが呼ばれるのだ。

つまり、ある一定期間は、両方のスレッドが動いていることになる。
そのせいで、表示がぼろぼろに…。

というわけで、Intent切替を行うと同時に、切り替え元・先の両方で、一切何も表示せず、かつ、切り替え元が動作を停止するまで待機、という処理を入れてやったら、うまくいった。

…んだけど、Intentの切り替えに、たまに、5秒以上かかるときがあるんだよね。
速いときは1秒もかからないのに、この差はどこから出てくるのか。

なので、待機中のアイコンを出したいのだが…。
[PR]
by miries | 2015-01-21 14:56 | Android


<< カメラのプレビューとsurfa... Javaとフォント >>