В Compose CollectAsStateWithLifecycle не работаетAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 В Compose CollectAsStateWithLifecycle не работает

Сообщение Anonymous »

Проблема:
  • Я использовал CollectAsStateWithLifecycle для сбора потока
  • Теперь, когда я инициирую поток и сворачиваю приложение, поток по-прежнему активен.
  • Согласно методу CollectAsStateWithLifecycle, выброс потока должен приостанавливаться, когда приложение свернуто.
ViewModel
@HiltViewModel
class CollectAsStateWithLifeCycleVm @Inject constructor(
@ApplicationContext private val context: Context,
) : ViewModel() {

companion object {
const val INITIAL_VALUE = 0
}

private var currentTime = INITIAL_VALUE

private val _data = MutableStateFlow(0)
val data = _data.asStateFlow()

init {
initiate()
}

private fun initiate() {
viewModelScope.launch {
while(true){
delay(1000L)
println("Flow is active current time ---> $currentTime")
_data.emit(currentTime++)
}
}
}

val newTimer = flow {
while(true){
delay(1000L)
println("Flow is active current time ---> $currentTime")
emit(currentTime++)
}
}.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000L),0)

}

Компонуемый
@Composable
fun CollectAsStateWithLifeCycleDemo(navController: NavHostController){

val viewModel: CollectAsStateWithLifeCycleVm = hiltViewModel()
//val time = viewModel.data.collectAsStateWithLifecycle()
//val time = viewModel.newTimer.collectAsStateWithLifecycle()
val time: Int by viewModel.data.collectAsStateWithLifecycle()

Column(
modifier = Modifier.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {

Spacer(modifier = Modifier.height(16.dp))

Text(
text = time.toString(),
fontSize = 30.sp
)

}

}


Подробнее здесь: https://stackoverflow.com/questions/784 ... ot-working
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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