0

私は、ゲームループ、レンダラー、パネルなど、Androidゲームに関連するすべての典型的なものを使用してAndroidゲームを開発しています...

問題は、ゲームを終了すると常にクラッシュすることです...ゲームループを正しく停止せずに続行するためだと思います。また、ゲームを「最小化」したり、携帯電話をスタンバイに切り替えたりするときに一時停止したいと思います。

onPauseとonDestroyには何を入れる必要がありますか?

私はこれしか持っていません:

@Override
public void surfaceDestroyed(SurfaceHolder holder) {

    super.surfaceDestroyed(holder);

    //Stop game loop:
    loop.setRunning(false);

    boolean retry = true;
    while (retry) 
    {           
        try 
        {
            //gameLoop.join();
            loop.stop();
            retry = false;
        } 
        catch (Exception e) 
        {
            // try again shutting down the thread
        }
    }
}

しかし、それだけでは十分ではなく、終了するためだけのものです。

ありがとう!!

4

1 に答える 1

1

アプリケーションが「正常に」動作していることを確認するには (通常は、意図したとおりに動作していることを意味します)、ゲーム ループを含むアクティビティでonPause() andメソッドをオーバーライドする必要があります。onResume()他の多くのコードを実際に提供していないことを考えると、これが単に実装するのを忘れたものであることは理にかなっています。

たとえば、目標を達成するための抽象的な疑似コードを次に示します。

protected void onPause(){

   //Save the game state
   //Pause the game loop
   //Save any other data that need to be persistent throughout sessions
}

protected void onResume(){

   //Reinitialize game state
   //Reinitialize any other persistent data
   //Resume the game loop
}

これまでに Android アプリケーションを開発したことがない場合、これは非常に見過ごされがちです。

Android アクティビティの状態に関する追加の説明については、Androidアクティビティのドキュメントから取得したこの画像を参照してください。

于 2012-11-05T18:03:40.823 に答える