как остановиться/отменить android CountDownTimer

Я расширяю класс CountDownTimer для получения некоторой пользовательской функциональности.In onTick () в случае, если некоторые условия соблюдают, я называю отмену (), ожидая, что это будет концом его, однако окружающее (), обратный вызов получает вызов до, количество вниз достигнуто. Таким образом, как предотвратить это?

17
задан rantravee 29 June 2010 в 06:33
поделиться

1 ответ

Метод CountDownTimer.cancel () не работает. Вот еще одна ветка без решения Таймер не останавливается в android .

Я бы порекомендовал вам вместо этого использовать таймер. Это намного более гибко и может быть отменено в любой момент. Это может быть что-то вроде этого:

public class MainActivity extends Activity {    
    TextView mTextField;
    long elapsed;
    final static long INTERVAL=1000;
    final static long TIMEOUT=5000;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mTextField=(TextView)findViewById(R.id.textview1);

        TimerTask task=new TimerTask(){
            @Override
            public void run() {
                elapsed+=INTERVAL;
                if(elapsed>=TIMEOUT){
                    this.cancel();
                    displayText("finished");
                    return;
                }
                //if(some other conditions)
                //   this.cancel();
                displayText("seconds elapsed: " + elapsed / 1000);
            }
        };
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(task, INTERVAL, INTERVAL);
    }

    private void displayText(final String text){
        this.runOnUiThread(new Runnable(){
            @Override
            public void run() {
                mTextField.setText(text);
            }});
    }
}
18
ответ дан 30 November 2019 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: