ViewNavigatorの画面開始・終了時の処理をどのタイミングでするべきか?
モバイルFlash(MF)の開発で使われるSparkのViewNavigatorでの画面開始・終了時の処理をどのイベントのタイミングでするべきだろうか?
特に画面開始時の処理のタイミングが問題だ。このタイミングが適切でないと画面の遷移がスムーズに行われず、ユーザーとしては「一瞬画面が止まる」「遅い」「重い」という風に感じてしまうから。
通常のFlex開発だと画面開始時の処理は主にCREATION_COMPLETEイベントのタイミングで行なってきたので、ViewNavigatorでも同様にしてみたけれど、どうも画面遷移が重い気がする。
そこで、Viewのライフサイクルを詳しく調べることにした。このあたりはドキュメントにまとめられていた。
Adobe Flex 4.6 * モバイルアプリケーションでのビューの定義
ドキュメントのフロー図を見ると、どうやらCREATION_COMPLETEではなく、VIEW_ACTIVATEの時点で行うのが良さそうだ。
なぜなら、CREATION_COMPLETEからVIEW_ACTIVATEまでの間には
・ActionBarの更新
・トランジション
・元のVIEWを削除
など、様々な処理が行われることになっているから。
これだけ様々な処理が入っている時に、サーバーへのリクエストだのデータのパースだのをしていたら、それは画面遷移が重くなるわけだ。
どれだけ速くなるかはCREATION_COMPLETEイベント時の処理の重さにもよるのだろうけど、実際にやってみたら結構速くなった気がする。
画面終了時の処理はVIEW_DEACTIVATEで行うのが良さそうだ。
特に画面開始時の処理のタイミングが問題だ。このタイミングが適切でないと画面の遷移がスムーズに行われず、ユーザーとしては「一瞬画面が止まる」「遅い」「重い」という風に感じてしまうから。
通常のFlex開発だと画面開始時の処理は主にCREATION_COMPLETEイベントのタイミングで行なってきたので、ViewNavigatorでも同様にしてみたけれど、どうも画面遷移が重い気がする。
そこで、Viewのライフサイクルを詳しく調べることにした。このあたりはドキュメントにまとめられていた。
Adobe Flex 4.6 * モバイルアプリケーションでのビューの定義
ドキュメントのフロー図を見ると、どうやらCREATION_COMPLETEではなく、VIEW_ACTIVATEの時点で行うのが良さそうだ。
なぜなら、CREATION_COMPLETEからVIEW_ACTIVATEまでの間には
・ActionBarの更新
・トランジション
・元のVIEWを削除
など、様々な処理が行われることになっているから。
これだけ様々な処理が入っている時に、サーバーへのリクエストだのデータのパースだのをしていたら、それは画面遷移が重くなるわけだ。
どれだけ速くなるかはCREATION_COMPLETEイベント時の処理の重さにもよるのだろうけど、実際にやってみたら結構速くなった気がする。
画面終了時の処理はVIEW_DEACTIVATEで行うのが良さそうだ。
コメント
コメントを投稿