Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
330 of 502 menu
◀ ▶

Метод onCleared

Метод onCleared класса ViewModel вызывается, когда модель больше не нужна: закрыли экран или уничтожили scope. Здесь отменяют корутины в viewModelScope, закрывают каналы и снимают слушатели. Параметров у метода нет.

Синтаксис

override fun onCleared() { super.onCleared() }

Пример

Давайте сбросим Flow при очистке модели:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material3.Text import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.compose.viewModel import kotlinx.coroutines.Job import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val model: TickViewModel = viewModel() val text by model.text.collectAsState() Text(text = text) } } } class TickViewModel : ViewModel() { private val _text = MutableStateFlow("abcde") val text = _text.asStateFlow() private var job: Job? = null init { job = viewModelScope.launch { delay(500) _text.value = "12345" } } override fun onCleared() { job?.cancel() super.onCleared() } }

На экране текст сменится на "12345", а при уходе с экрана job отменят в onCleared.

Смотрите также

  • класс ViewModel,
    у которого объявлен onCleared
  • функция viewModel,
    которая создаёт или находит модель
  • класс Lifecycle,
    который управляет жизнью компонента
  • функция LaunchedEffect,
    которая отменяется при уходе composable
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить