0

カウントダウン タイマーがあり、isAddTime メソッドが true になるたびに 10 秒を追加したいと考えています。正常に追加しましたが、時間が追加されるたびに、現在の時間で終了します。

OnTickメソッドでキャンセルしています他のクラスでキャンセルしようとしましたが、キャンセルに成功しましたが、タイマーを再開できません..別のクラスでキャンセルすると静的になるためです。

これが私のコードです:

timerHolder = new CountDownTimer(30000, 1000) {

            @Override
            public void onFinish() {
                Class.isAddTime = false;
                Intent i = new Intent(getBaseContext(), OtherClass.class);
                startActivity(i);
            }

            @Override
            public void onTick(long millisUntilFinished) {
                timeLeft = millisUntilFinished;              
                if(Class.isAddTime()){
                    timerHolder.cancel();
                    AddTime();
                    Class.isAddTime = false;
                }
                timer.setText("Time left: " + String.valueOf(timeLeft / 1000));
            }
        }.start();

そして、ここに AddTime() があります:

private void AddTime(){
     timerHolder = new CountDownTimer(timeLeft + 10000, 1000) {

         @Override
         public void onFinish() {
             Class.isAddTime = false;
             Intent i = new Intent(getBaseContext(), OtherClass.class);
             startActivity(i);
         }

         @Override
         public void onTick(long millisUntilFinished) {
             timeLeft += 10000;
             timeLeft = millisUntilFinished;               
             if(Class.isAddTime()){
                 timerHolder.cancel();
                 AddTime();
                 Class.isAddTime = false;
             }
             timer.setText("Time left: " + String.valueOf(timeLeft / 1000));
         }
     }.start();

キャンセルしたのに、なぜ現在の時刻が続くのだろうと思っていました。キャンセルを呼び出す他の方法はありますか?カウントダウンタイマーに時間を追加する方法について、よりクリーンな解決策はありますか?

4

2 に答える 2

0

キャンセル後にtimerHolderオブジェクトを作成します。null

if(Class.isAddTime()){
      timerHolder.cancel();
      timerHolder=null;
      AddTime();
      Class.isAddTime = false;
}
于 2013-09-11T04:06:53.137 に答える