Android 进度指示器在 for 循环中立即递增
Android progress indicator increments at once in a for loop
我想在扫描设备中的所有文件时增加进度指示器。这是一个简化的实现:
val totalFiles = 10000
progressBar.max = totalFiles
repeat(totalFiles) {
Thread.sleep(5) // to slow the loop for debugging purposes
binding.circularProgress.incrementProgressBy(1)
}
进度条本应每 5 毫秒递增 1,但它在循环结束后立即递增。我不明白为什么这不起作用。有什么想法吗?谢谢
Thread.sleep()
阻塞主 UI 线程,进度条没有机会更新自己。
与其阻塞主线程,不如使用一些并发机制(rxjava、协程、asynctask、原始线程)进行处理,将 UI 更新发布到主线程。
我想在扫描设备中的所有文件时增加进度指示器。这是一个简化的实现:
val totalFiles = 10000
progressBar.max = totalFiles
repeat(totalFiles) {
Thread.sleep(5) // to slow the loop for debugging purposes
binding.circularProgress.incrementProgressBy(1)
}
进度条本应每 5 毫秒递增 1,但它在循环结束后立即递增。我不明白为什么这不起作用。有什么想法吗?谢谢
Thread.sleep()
阻塞主 UI 线程,进度条没有机会更新自己。
与其阻塞主线程,不如使用一些并发机制(rxjava、协程、asynctask、原始线程)进行处理,将 UI 更新发布到主线程。