モバイルアプリのフォーカスの流れ
MonoBehaviourのコールバック関数
MonoBehaviour派生クラスのコールバックで、
OnApplicationFocus/OnApplicationPause/OnApplicationQuitの3関数があります。
また、アプリ起動時にはじめに通る「Start」関数も含め、呼び出し順について記載します。
Start
void Start () { }
スクリプトが呼び出される始めの1回呼び出されます。
Updateがよばれる前に呼ばれます。初期化処理などはここに記載することになります。
OnApplicationFocus
void OnApplicationFocus(bool focusStatus) { }
アプリケーションにフォーカスされたとき、またははずれるときに呼ばれます。
第一引数がtrueの場合はフォーカスされた、falseの場合はフォーカスが外れた。
OnApplicationPause
void OnApplicationPause(bool pauseStatus) { }
アプリケーションが一時停止/再開されたときに呼ばれます。
第一引数がtrueの場合は一時停止、falseの場合は一時停止から再開。
OnApplicationQuit
void OnApplicationQuit() { }
アプリケーションが終了するときに呼ばれます。
Android環境
Android環境(Nexus7)で確認。
iOSでは異なるかもしれないため、別途追記予定。
アプリを起動して終了
単純に、アプリを起動して「Application.Quit();」で終了するまでの流れ。
他のアプリへの切り替えは行わず。
- OnApplicationFocus (true) <== アプリ起動
- Start
- OnApplicationFocus (false) <== アプリ終了(スクリプト内部でApplication.Quit()を呼んだ)
- OnApplicationQuit
この場合は、Pauseは呼ばれないようです。
アプリを起動して他のアプリに切り替え
- OnApplicationFocus (true) <== アプリ起動
- Start
- OnApplicationPause (true) <== 他のアプリに切り替え
この後、アプリケーションに再び戻ると
- OnApplicationFocus (false) <== 他のアプリから復帰
- OnApplicationFocus (true)
- OnApplicationPause (false)
という流れに。
アプリを起動してスリープ(端末のハードボタンを押す)
- OnApplicationFocus (true) <== アプリ起動
- Start
- OnApplicationPause (true) <== スリープ
この後、スリープ状態から復帰すると、
- OnApplicationPause (false) <== スリープから復帰
という流れに。
これより、自動的にアプリの情報を保存したい場合は「OnApplicationPause(true) 」「OnApplicationQuit」で行う。
自動的にアプリの情報を読み込む場合は「Start」「OnApplicationPause(false)」で行う。
とすると、よいかもしれません。
なお、pauseが行われた「OnApplicationPause (true)」から、pauseが解除される「OnApplicationPause (false)」の間はUpdate関数は呼ばれません。
最終更新時間:2014年04月10日 20時48分31秒