
Size: a a a
viewModelScope
extension property. Подробности использования и реализации вы можете найти в статье!View
отвечает за отображение данных, VM
- предоставляет данные, которые отобразятся на View
и обрабатывает события, связанные с данными в нейVM
содержит только логику. Он не должен содержать никаких классов из Android SDK, все платформенное API должно предоставляться через абстракции в виде интерфейсов.View
только сообщается VM
о произошедшем событие (простым вызовом метода в VM
) и не выполняет какой-либо логикиVM
не знает ничего о View
VM
они сразу же должны отображаться в View
. Эффективный способ достичь этого - использовать LiveData. Это позволяет организовать push взаимодействие между VM
и View
, что дает мгновенное отображение любых изменений в данных на экране.VM
можно вынести ее в отдельный класс - Presenter
, который служит медиатором между VM
. В таком случае VM
будет служить чистым контейнером состояния View
.onDemand="false"
.val translateCheckpoint = canvas.save()
canvas.translate(200f, 300f)
canvas.drawCircle(...)
val rotateCheckpoint = canvas.save()
canvas.rotate(45f)
canvas.drawRect(...)
canvas.restoreToCount(rotateCheckpoint)
canvas.restoreToCount(translateCheckpoint)
canvas.withTranslate(200f, 300f) {
drawCircle(...)
withRotate(45f) {
drawRect(...)
}
}
save
/restore()
.adb emu avd pause
/resume
для теста.