Что я хочу сделать, так это создать приложение Cooking Alarm.
Я использую архитектуру MVVM и хочу обновить ее через LiveData.
Это класс тревогиУ меня есть. каждую секунду будут затронуты все item
внутри data
и должен быть вызван tick
. tick
обновит timeLeft
, что должно быть отражено в пользовательском интерфейсе. Тем не менее, другие компоненты экрана должны оставаться такими же.
Единственное, что регулярно обновляется, это текст, который будет представлять оставшееся время (который мне еще предстоит написать код для преобразования из int в строку). Какой лучший способ убедиться, что представление переработчика только обновляет время и не тратит время на настройку образа и имени элемента заново?
class Alarm(item: Item, private val context: Context, val notifyID: Int) {
var timeLeft = item.timeInSec
val name = item.name
val imageUri = item.imageUri
var isFinished = false
// count down goes down every seconds
fun tick() {
timeLeft--
if (timeLeft <= 0) {
onFinish()
}
}
fun onFinish() {
isFinished = true
}
}