
Size: a a a



viewModelScope extension property. Подробности использования и реализации вы можете найти в статье!
View отвечает за отображение данных, VM - предоставляет данные, которые отобразятся на View и обрабатывает события, связанные с данными в нейVM содержит только логику. Он не должен содержать никаких классов из Android SDK, все платформенное API должно предоставляться через абстракции в виде интерфейсов.View только сообщается VM о произошедшем событие (простым вызовом метода в VM) и не выполняет какой-либо логикиVM не знает ничего о ViewVM они сразу же должны отображаться в 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 для теста.




