Ответ
Лаг — это задержка или подтормаживание интерфейса приложения, из-за которого пользовательский опыт становится менее плавным. Основные причины:
- Долгие операции в UI-потоке (например, работа с сетью или БД).
- Перегруженная отрисовка (сложные layout’ы, много вложенных View).
- Утечки памяти (активности не освобождаются, GC тормозит систему).
Пример исправления:
// Плохо (блокирует UI)
fun loadData() {
val data = fetchFromNetwork() // Долгая операция
updateUI(data)
}
// Хорошо (используем корутины)
fun loadData() {
viewModelScope.launch(Dispatchers.IO) {
val data = fetchFromNetwork()
withContext(Dispatchers.Main) { updateUI(data) }
}
}
Как избежать:
- Использовать
RecyclerViewвместоListView. - Оптимизировать layout (меньше вложенности,
ConstraintLayout). - Выносить тяжелые задачи в фоновые потоки (
Coroutines,RxJava).