【发布时间】:2021-08-14 10:56:05
【问题描述】:
我需要你的帮助,有一个 livedata 返回一个不断变化的布尔值。我需要,当 true 执行协程(只是模拟从 0 到 100% 的加载百分比)时,分别取消它,等等。
如果返回 true,则运行协程,否则取消它
graphicOverlay.onSuccess.observe(viewLifecycleOwner, {
auraImageView.isInvisible = it != true
noteScanFaceView.isVisible = it == false
if (!isFaceDetected) {
if (it) {
buttonChangeCameraSelector.isVisible = false
llScanning.isVisible = true
viewLifecycleOwner.lifecycleScope.launch {counter()}
isFaceDetected = true
} else {
viewLifecycleOwner.lifecycleScope.cancel()
}
}
})
这是一个计数器
private suspend fun counter() = viewLifecycleOwner.lifecycleScope.launch {
val job = launch {
while (progressStatus < 100) {
progressStatus += 1
delay(50)
handler.post {
textViewPercent.text = "$progressStatus"
}
}
}
job.join()
fragmentSendDataListener.onSendResultsModel(resultSendData)
requireActivity().runOnUiThread {
llToolbar.isVisible = false
}
}
【问题讨论】:
标签: android kotlin-coroutines android-livedata