在繁忙的UI线程上运行ProgressBar

时间:2015-07-30 10:04:06

标签: android multithreading android-asynctask progress-bar runnable

我需要在UI线程上完成一些工作,但这意味着我不能(我知道)在UI忙于执行其他任务时显示ProgressBar

我知道这听起来有点不合逻辑,但是当UI线程忙时,有没有办法在UI线程上显示不确定的ProgressBar

我知道使用Runnables和AsyncTasks,如果可以的话,我会用它们来完成实际工作,但是这些可以用来显示ProgressBar本身吗?

3 个答案:

答案 0 :(得分:3)

只需在其中显示带有正在加载... 的文本视图,或其他一些静态视图(带有进度的图像视图,不会旋转)。任何其他解决方案都需要在UI上完成工作。

我真的会检查我的代码以释放UI,因为如果你使用UI的时间过长,用户就无法按回或任何东西,他会觉得应用程序被卡住了。

答案 1 :(得分:2)

简短的回答是否定的。

如果您的UI线程因工作繁重而阻塞,则UI不会更新。

但我相信你可以改进你的代码,这样它就不会阻止UI线程。

答案 2 :(得分:0)

是的,你可以在AsyncTask的帮助下在UI线程上显示一个不确定的ProgressBar。

onPreExecute() {
    // Display Progressbar here
}

doInBackground() {
    // Do some heavy task here, but not related to UI thread
}

onPostExecute() {
     // Dismiss the Progressbar
}