运行 繁忙的 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
}
我需要在 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
}