Android进度指示器在for循环中一次递增

时间:2020-05-15 15:27:10

标签: android kotlin progress-bar

我想在扫描设备中的所有文件时增加进度指示器。这是一个简化的实现:

val totalFiles = 10000
progressBar.max = totalFiles
repeat(totalFiles) {
    Thread.sleep(5) // to slow the loop for debugging purposes
    binding.circularProgress.incrementProgressBy(1)
}

应该使进度条每5毫秒增加1,但是相反,它在循环完成后立即增加。我不明白为什么这行不通。有想法吗?谢谢

1 个答案:

答案 0 :(得分:1)

Thread.sleep()阻止了主UI线程,并且进度条没有机会进行自我更新。

使用某些并发机制(rxjava,协程,asynctask,原始线程)来进行处理,而不是阻塞主线程,将UI更新发布到主线程。