2

アクティビティGameActivity:アプリケーションを最初に開いたときに開いたページ。アクティビティGameMain:ゲームのプレイアクティビティ。アクティビティGameWin:次のGameActivity画面に移動します(最終的には、統計などが表示された「Youwin!」画面が表示されます)

  1. アプリケーションが開始されます
  2. これがトリガーされます:

    button = (Button) findViewById(R.id.button1);
    
    button.setOnClickListener(new OnClickListener() {
    
        public void onClick(View arg0) {
            Intent intent = new Intent(context, GameMain.class);
            intent.putExtra("level",1);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            finish();
        }
    
    });
    
  3. GameMainこれでロードされました。これで、文字、circleが画面の左側に表示されます。

  4. circle画面の右側に到達すると、ゲームループ内の次のifステートメントが真になります。

        if ((circle.x+width/2 > end.startx) && (circle.x-width/2 < end.stopx) && (circle.y+circle.size==end.starty-width/2)) {
                layout.removeAllViews();    
                Intent intent = new Intent(context, GameWin.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.putExtra("level",level);
                finish();
                startActivity(intent);
        }
    
  5. GameWin画面はこれを行います:

        Log.v(TAG,"Goint to level: "+(level+1));
        Intent intent = new Intent(context, GameMain.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intent.putExtra("level",(level+1));
        startActivity(intent);
        finish();
    
  6. 時々それは機能し、GameMainレベルデータを2として使用しますが、レベル画面を通過してレベル2に直接移動した場合よりもかなり遅くなります。時々それは機能し、GameMainレベルデータを2にして、ページを何度も何度もリロードします。時々、私の電話は再起動します。

  7. レベル2を完了する能力がある場合は、そうします。レベル3は、動作するか、リフレッシュするか、電話を再起動すると、さらに遅くなります。

  8. いつでも[ホーム]をクリックすると、ホーム画面に移動しますが、アプリケーション最後のレベルのに戻りGameMainます(手順6または7に戻ります)。

私は何が間違っているのですか?

APIレベル8、LG P500(2.3.3)

これは問題ではなかったことがわかりました。ゲームループはまだバックグラウンドで実行されていました。

4

2 に答える 2

0

それは意図の問題の一部にすぎなかったことが判明しました。主な問題は、ゲームループを停止していなかったことです

ゲームループが停止すると、すべてが正常に機能しました。

于 2012-07-02T06:50:55.867 に答える
0

次の 2 つのことを試してください。

  1. GameMain では、必ずstartActivity(intent)前に呼び出してくださいfinish()
  2. マニフェストのアクティビティにnoHistoryを追加し、true に設定します

編集関数とコールバックにロギング ステートメントの追加を開始する必要があります。これにより、何が実行されているかが表示され、実行にかかる時間に関するタイミング情報が得られます。例:

onCreate(){
   Log.i(TAG, "onCreate++");
   super.onCreate();

   //other code here

   Log.i(TAG, "onCreate--");
}
于 2012-07-02T06:09:04.043 に答える