Хорошо ли использовать один объект (плеер, менеджер и т. д.) в качестве состояния в Composable для слушателя?Android

Форум для тех, кто программирует под Android
Гость
Хорошо ли использовать один объект (плеер, менеджер и т. д.) в качестве состояния в Composable для слушателя?

Сообщение Гость »

Это сделано для того, чтобы избежать написания нескольких состояний в компонуемом файле.
Вот пример. менеджер

Код: Выделить всё

val manager by remember { mutableStateOf(downloadManager, neverEqualPolicy())}
manager содержит информацию, которую мы хотим показать в пользовательском интерфейсе. у менеджера есть прослушиватель:

Код: Выделить всё

DisposableEffect(true) {

val listener = object : DownloadManager.Listener {
override fun onDownloadChanged(downloadManager: DownloadManager, download: Download) {
manager = downloadManager
}

override fun onDownloadsPausedChanged(downloadManager: DownloadManager, downloadsPaused: Boolean) {
manager = downloadManager
}

override fun onDownloadRemoved(downloadManager: DownloadManager, download: Download) {
manager = downloadManager
}
}

manager.addListener(listener)
onDispose { manager.removeListener(listener) }
}
И рендеринг

Код: Выделить всё

LazyColumn {
itemsIndexed(manager.currentDownloads){index, item ->
ListItem(headlineContent = { Text("${item.percentDownloaded}") })
}
}
Поэтому каждый раз, когда происходит событие, состояние менеджера будет обновляться, а затем запускать повторный рендеринг. Но я хочу знать, является ли это подходящим способом обновления пользовательского интерфейса, или мне нужно привязать каждое состояние прослушивателя для обновления пользовательского интерфейса? В таком случае есть ли лучший способ обновить состояние?

Подробнее здесь: https://stackoverflow.com/questions/781 ... mposable-f

Вернуться в «Android»