Как безопасно повторно использовать одну и ту же переменную объекта в Viewmodel (работая над простым приложением таймера)? - PullRequest
0 голосов
/ 06 мая 2019

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

У меня есть одно действие, которое показывает таймер MainActivity (таймер также может быть запущен из этого действия) и одно действие, которое позволяет пользователю выбрать время обратного отсчета и отправить его (SelectActivity).

Я использую ViewModel, который содержит настроенный класс CountDownTimer. Пользователь может в любой момент вернуться к SelectActivity и отправить новое время. В моем коде я явно установил таймер на null, как вы можете видеть ниже (не лучший код, но я надеюсь, что идея встречается). Я добавил model.timer = null потом.

Проблема: если пользователь отправляет новое время, MainActivity теперь показывает 2 счетчика, которые ведут обратный отсчет в быстрой последовательности (оставшееся время отображается в одном представлении).

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

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        // Check which request we're responding to
        if (requestCode == 1) {
            // Make sure the request was successful
            model.timer = null
            model.timer = MyTimer(data?.getLongExtra("Message",11) ?: 0, 10, true).apply {
                setListener(model.timerListener)
            }
            model.timerStatus.value = StateTimer.INITIALIZED
        }
    }

1 Ответ

0 голосов
/ 06 мая 2019

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

model.timerStatus.value = StateTimer.INITIALIZED

Полагаю, эта другая строка влияет на способ отображения информации, поскольку вы снова инициализируете тот же экземпляр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...