Вызывает ли сохранение ссылки на LazyListState в ViewModel утечку памяти? ⇐ Android
Вызывает ли сохранение ссылки на LazyListState в ViewModel утечку памяти?
У меня есть LazyColumn, и я хочу прокрутить список до начала, проведя пальцем по нему для обновления. Я использую обновление Compose для макета обновления с помощью смахивания. Я сохраняю lazyliststate в своей модели представления, чтобы прокручивать список до начала после завершения вызова loadList.
`@Composable весело pullRefreshList( контакты: Список, навконтроллер: Навконтроллер, модификатор: Модификатор = Модификатор, ) { val viewModel = viewModel() обновление val с помощью viewModel.isRefreshing.collectAsState() val listState = RememberLazyListState() viewModel.onRefreshFinished = { // Прокрутка вверх при вызове обратного вызова listState.scrollToItem(0) } val pullRefreshState = RememberPullRefreshState(обновление, viewModel::loadList) Box(Modifier.pullRefresh(pullRefreshState)) { LazyColumn (состояние = listState, модификатор = модификатор) { элементы(контакты) { имя_контакта -> Ряд( модификатор = Модификатор .height(30.dp) .fillMaxWidth() .clickable { navController.navigate("screen2") }, ГоризонтальноеРасположение = Расположение.Центр, ) { Текст (текст = имя_контакта, размер шрифта = 24.sp) } } } PullRefreshIndicator(обновление, pullRefreshState, Modifier.align(Alignment.TopCenter)) } }` Моя модель представления, в которой я храню ссылку на lazyliststate – `класс MainViewModel: ViewModel() { частный val _isRefreshing = MutableStateFlow (false) val isRefreshing = _isRefreshing.asStateFlow() частная переменная nextInt = 0 var onRefreshFinished: (suspend () -> Unit)? = ноль весело loadList() { viewModelScope.launch { _isRefreshing.value = правда добавить в список() _isRefreshing.value = ложь onRefreshFinished?.invoke() } } }` Значит, в пользовательском интерфейсе на основе XML мы обычно не хотим хранить ссылку на представление в модели представления, потому что это может вызвать утечку памяти? В Compose, приведет ли это к утечке данных?
У меня есть LazyColumn, и я хочу прокрутить список до начала, проведя пальцем по нему для обновления. Я использую обновление Compose для макета обновления с помощью смахивания. Я сохраняю lazyliststate в своей модели представления, чтобы прокручивать список до начала после завершения вызова loadList.
`@Composable весело pullRefreshList( контакты: Список, навконтроллер: Навконтроллер, модификатор: Модификатор = Модификатор, ) { val viewModel = viewModel() обновление val с помощью viewModel.isRefreshing.collectAsState() val listState = RememberLazyListState() viewModel.onRefreshFinished = { // Прокрутка вверх при вызове обратного вызова listState.scrollToItem(0) } val pullRefreshState = RememberPullRefreshState(обновление, viewModel::loadList) Box(Modifier.pullRefresh(pullRefreshState)) { LazyColumn (состояние = listState, модификатор = модификатор) { элементы(контакты) { имя_контакта -> Ряд( модификатор = Модификатор .height(30.dp) .fillMaxWidth() .clickable { navController.navigate("screen2") }, ГоризонтальноеРасположение = Расположение.Центр, ) { Текст (текст = имя_контакта, размер шрифта = 24.sp) } } } PullRefreshIndicator(обновление, pullRefreshState, Modifier.align(Alignment.TopCenter)) } }` Моя модель представления, в которой я храню ссылку на lazyliststate – `класс MainViewModel: ViewModel() { частный val _isRefreshing = MutableStateFlow (false) val isRefreshing = _isRefreshing.asStateFlow() частная переменная nextInt = 0 var onRefreshFinished: (suspend () -> Unit)? = ноль весело loadList() { viewModelScope.launch { _isRefreshing.value = правда добавить в список() _isRefreshing.value = ложь onRefreshFinished?.invoke() } } }` Значит, в пользовательском интерфейсе на основе XML мы обычно не хотим хранить ссылку на представление в модели представления, потому что это может вызвать утечку памяти? В Compose, приведет ли это к утечке данных?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение