代码之家  ›  专栏  ›  技术社区  ›  TomaszCatarski

Android CountDownTimer取消倒计时

  •  0
  • TomaszCatarski  · 技术社区  · 10 年前

    我有下面的MainActivity类,我需要取消其他类中onBackPressed方法的倒计时。我还复制了下面的CountDownTimer类。我该怎么做,有什么帮助吗?谢谢您的回复。

     @Override
        public void onCreate(Bundle savedInstanceState) {
    
    
        textViewTime = (TextView) findViewById(R.id.tv_Time);
        textViewTime.setText(getString(R.string.countdown_time));
    
        final CounterClass timer = new CounterClass(10999, 900);
        timer.start();
    
        btnStop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                timer.cancel();
            }
        });
    }
    
    @Override
    public void onBackPressed() {
        super.onBackPressed();
    
    // here cancel // 
    
    }
    
        public class CounterClass extends CountDownTimer {
    
        public CounterClass(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }
    
        @Override
        public void onFinish() {
            textViewTime.setText("COMPLETED");
    
        }
    
        @Override
        public void onTick(long millisUntilFinished) {
            long millis = millisUntilFinished;
            String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),
                    TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
                    TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
            textViewTime.setText(hms);
        }
    }
    
    1 回复  |  直到 10 年前
        1
  •  1
  •   MDrabic    10 年前

    CountDownTimer 有一个 cancel() 方法来终止计时器。

    你的 MainActivity 看起来像这样

    public class MainActivity extends Activity {
    
        private final CounterClass timer;
    
        @Override 
        public void onCreate() {
             timer = new CounterClass(10999, 900);
             timer.start();
             /* rest of the code omitted */
        }
    
        @Override
        public void onBackPressed() {
            super.onBackPressed();
            timer.cancel()
        }
    }