Android CountDownTimer как отдельный класс - PullRequest
2 голосов
/ 12 ноября 2011

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

Однако я не знаю, как класс таймера может взаимодействовать с классом, который его создал.

Пример: класс A имеет textView, который отображает некоторое количество секунд. Итак, класс А создает таймер.

  • Как можно сказать, что метод onTick () в CountDownTimer должен обновить мой textView с текущим временем?
  • Как мой класс А узнает, когда таймер закончил?

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

Ответы [ 2 ]

1 голос
/ 12 ноября 2011

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

например.

    mCountDownTimer = MyCountDownTimer(totalMsecs, callInterval, this).start();

Где MyCountownTime будет иметь такие методы:

        public void onTick(long millisUntilFinished) {

            float fraction = millisUntilFinished / (float) totalMsecs;

                        // myActivity is passed in the constructor
            mMillisUntilFinished = millisUntilFinished;

            // progress bar is based on scale of 1 to 100;
            mActivity.progressBar.setProgress((int) (fraction * 100));

        }

        public void onFinish() {
                mMillisUntilFinished = 0;
            handleTimeOut();
        }

Предполагается, что mActivity передается в конструкторе. Я изменил код, чтобы предположить, что вызывающая активность была передана как переменная в конструкторе таймера и установлена ​​как член класса таймера.

0 голосов
/ 12 ноября 2011

Вы можете:

  1. Передавать переменные в него (например, TextView для обновления или всего действия)
  2. Сделать переменные в классе, используя его статическими (класс таймера может обращаться к ним напрямую)
  3. Реализовать механизм обратного вызова
...