运行 繁忙的 UI 线程上的 ProgressBar

Running ProgressBar on busy UI thread

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

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

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

只需显示其中包含 Loading... 的文本视图,或其他一些静态视图(带进度的图像视图,不会旋转)。任何其他解决方案都需要在 UI.

上完成工作

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

简短的回答是否定的。

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

但我相信您可以改进代码,使其不会阻塞 UI 线程。

是的,您可以借助 AsyncTask 在 UI 线程上显示不确定的 ProgressBar。

onPreExecute() {
    // Display Progressbar here
}

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

onPostExecute() {
     // Dismiss the Progressbar
}