コガネブログ

平日更新を目標にUnityやC#、Visual Studioなどのゲーム開発アレコレを書いていきます

【Unity】iOSにおいてサスペンド・レジューム時にOnApplicationPauseが2回連続で呼び出されることがある

Unity5.4.4f1でビルドしたアプリをサスペンドした状態で長時間放置してから
レジュームしてみたところ、OnApplicationPause が2回連続で呼び出される現象に遭遇した

アプリのサスペンド・レジューム時に1度だけ呼び出される処理を実装したい場合は
下記のようにフラグを用いたほうが安全

private bool m_isSuspended;

private void OnApplicationPause( bool isPause )
{
    if ( isPause )
    {
        OnSuspend();
    }
    else
    {
        OnResume();
    }
}

private void OnSuspend()
{
    if ( m_isSuspended ) return;
    m_isSuspended = true;
    
    ...
}

private void OnResume()
{
    if ( !m_isSuspended ) return;
    m_isSuspended = false;
    
    ...
}