2016-05-07 5 views
0
new CountDownTimer(30000, 1000) { 

    public void onTick(long millisUntilFinished) { 
     mTextField.setText("seconds remaining: " + millisUntilFinished/1000); 
    } 

    public void onFinish() { 
     mTextField.setText("done!"); 
    } 
    }.start() 

это помогает мне создать таймер, но как я могу создать таймер, как только выше таймера отделки и генерировать уведомления, когда таймер заканчиваетЯ хочу создать таймер обратного отсчета и как только заканчивается таймер я хочу таймер другой отсчет времени до запуска

ответ

0

Вы не должны определить CountDownTimer как анонимный класс, но вместо этого в своем собственном файле. Затем вы можете просто позвонить: новый CountDownTimer (30000, 1000), чтобы запустить его в методе onFinish() предыдущего. Запишите уведомление, вы можете e. г. используйте тосты или закусочные.

1

Первый: сделать класс, который расширяет CountDownTimer

public class SecondTimer extends CountDownTimer{ 

     public SecondTimer(long millisInFuture, long countDownInterval) { 
      super(millisInFuture, countDownInterval); 
     } 

     @Override 
     public void onTick(long millisUntilFinished) { 

     } 

     @Override 
     public void onFinish() { 
     //Generate notification here 
     } 
    } 

Второе: Инициализировать экземпляр этого класса

SecondTimer secondTimer = new SecondTimer(5000,1000); 

Третье: Старт SecondTimer, когда первый таймер останавливается

public class FirstTimer extends CountDownTimer{ 

     public SecondTimer(long millisInFuture, long countDownInterval) { 
      super(millisInFuture, countDownInterval); 
     } 

     @Override 
     public void onTick(long millisUntilFinished) { 

     } 

     @Override 
     public void onFinish() { 
     secondTimer.start(); 
     } 
    } 


FirstTimer firstTimer = new FirstTimer(5000,1000); 
firstTimer.start(); 
0

Этот должен работать нормально

 
package com.stackoverflow.example; 

import android.os.CountDownTimer; 

/** 
* @author aminu on 5/7/2016. 
*/ 
public class CountDownTimerHelper { 

    private int numOfRuns; 
    private long millisInFuture, countDownInterval; 


    private CountDownTimerHelper(int numOfRuns, long millisInFuture, long countDownInterval) { 
     //you may check for invalid arguments here like negative intervals 

     this.numOfRuns = numOfRuns; 
     this.millisInFuture = millisInFuture; 
     this.countDownInterval = countDownInterval; 
    } 

    private void tryRun() { 
     if (numOfRuns-- > 0) { 
      new CountDownTimerImpl(millisInFuture, countDownInterval).start(); 
     } 
    } 


    public static void startCountDownTimers(int numOfRuns, long millisInFuture, long countDownInterval) { 
     new CountDownTimerHelper(numOfRuns, millisInFuture, countDownInterval).tryRun(); 
    } 

    private class CountDownTimerImpl extends CountDownTimer { 
     /** 
     * @param millisInFuture The number of millis in the future from the call 
     *       to {@link #start()} until the countdown is done and {@link #onFinish()} 
     *       is called. 
     * @param countDownInterval The interval along the way to receive 
     *       {@link #onTick(long)} callbacks. 
     */ 
     private CountDownTimerImpl(long millisInFuture, long countDownInterval) { 
      super(millisInFuture, countDownInterval); 
     } 

     @Override 
     public void onTick(long millisUntilFinished) { 
      //mTextField.setText("seconds remaining: " + millisUntilFinished/1000); 
     } 

     @Override 
     public void onFinish() { 
      //notify user countdown ended by showing toast or something like that 

      //mTextField.setText("done " + "remaining " + numOfRuns + "); 

      tryRun(); 
     } 

    } 
} 

затем использовать его вобще CountDownTimerHelper.startCountDownTimers(numOfRuns,yourDuration,yourInterval)

пример CountDownTimerHelper.startCountDownTimers(5,15000,1000) //this will run 5 successive countdowntimers with duration 15 seconds and interval 1 second