0

私は現在、ユーザーがホームボタンを押したときに一時停止、停止、再開の方法を利用するタッピングゲームを持っています。残り-問題ありませんが、タイマーが完全に実行され、ユーザーが新しいアクティビティ、つまりリーダーボード/設定などの開始に進むと、onResumeが再び発生し、残り1秒のカウントダウンが再び開始されます。方法はありますか?特定の活動などから戻ったときに発射されるのを止めることはできますか?

以下は、私が無駄に使用しようとしたボッジジョブを示しています。非常に面倒で効果的ですが、アイデアが不足しています!

  protected void onResume() {
        super.onResume();

        if (timeLeft < 1000) {

        } else {
            if (timeLeft <= 0) {

            } else {

                if (newActivityOpened == true) {

                } else {
                    if (isTimerRunning == true) {
                        startCountDownTimer();
                    }

                }

            }
        }
    }

すべての冗長な if ステートメントを許してください。

4

3 に答える 3

1

確かにあなたがする必要があるのは次のことだけです...

// Code where you start the new Activity...
stopCountDownTimer();
if (timeLeft < 1000)
    isTimerRunning = false;
startActivity(intent);

その後、onResume()あなただけで...

if (isTimerRunning)
    startCountDownTimer();
于 2012-04-16T18:01:43.127 に答える
0

現在タイミング/カウントダウンしているかどうかを示すフラグを作成するだけです。タイマーセットを開始したらtiming = true;、完了したらtiming = false;

次に、onResumeで、タイマーがすでに実行を開始したかどうかがわかります。

protected void onResume() {
    if (timing)
    {
        //  create your timer here
    }
    else{
        // do nothing?
    }
}
于 2012-04-16T17:50:17.260 に答える
0

アクティビティで単純なグローバル ブール値を使用しないのはなぜですか? 何らかのアクティビティを開始するときはいつでも true に設定してください。onResume() でブール値を確認してください。true に設定されている場合は、カウントダウン タイマーを開始しないでください。それ以外の場合は開始します。

protected void onResume() { 
    if( !newActivityOpened){
        if ( isTimerRunning ) {
            startCountDownTimer();
        }
    }
    super.onResume();
}

問題が正しく発生したかどうかはわかりませんが、これで問題が解決するはずです。

于 2012-04-16T17:38:25.743 に答える