トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

unity_script_mobile_focus_pause

モバイルアプリのフォーカスの流れ


 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();」で終了するまでの流れ。
他のアプリへの切り替えは行わず。

  1. OnApplicationFocus (true) <== アプリ起動
  2. Start
  3. OnApplicationFocus (false) <== アプリ終了(スクリプト内部でApplication.Quit()を呼んだ)
  4. OnApplicationQuit

この場合は、Pauseは呼ばれないようです。

アプリを起動して他のアプリに切り替え


  1. OnApplicationFocus (true) <== アプリ起動
  2. Start
  3. OnApplicationPause (true) <== 他のアプリに切り替え

この後、アプリケーションに再び戻ると

  1. OnApplicationFocus (false) <== 他のアプリから復帰
  2. OnApplicationFocus (true)
  3. OnApplicationPause (false)

という流れに。

アプリを起動してスリープ(端末のハードボタンを押す)


  1. OnApplicationFocus (true) <== アプリ起動
  2. Start
  3. OnApplicationPause (true) <== スリープ

この後、スリープ状態から復帰すると、

  1. OnApplicationPause (false) <== スリープから復帰

という流れに。

これより、自動的にアプリの情報を保存したい場合は「OnApplicationPause(true) 」「OnApplicationQuit」で行う。
自動的にアプリの情報を読み込む場合は「Start」「OnApplicationPause(false)」で行う。
とすると、よいかもしれません。

なお、pauseが行われた「OnApplicationPause (true)」から、pauseが解除される「OnApplicationPause (false)」の間はUpdate関数は呼ばれません。


最終更新時間:2014年04月10日 20時48分31秒