【问题标题】:Running ProgressBar on busy UI thread在繁忙的 UI 线程上运行 ProgressBar
【发布时间】:2015-10-21 15:14:33
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    我真的会检查我的代码以释放 UI,因为如果你使用 UI 的时间过长,用户将无法按回或任何操作,并且他会感觉到应用程序被卡住了。

    【讨论】:

    • 好主意 :) 确保在开始繁重的工作之前显示此视图。
    • 感谢您的建议!我想这不是最漂亮的选择...但是是的,理想情况下 UI 不会被阻止...
    【解决方案2】:

    简短的回答是否定的。

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

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

    【讨论】:

      【解决方案3】:

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

      onPreExecute() {
          // Display Progressbar here
      }
      
      doInBackground() {
          // Do some heavy task here, but not related to UI thread
      }
      
      onPostExecute() {
           // Dismiss the Progressbar
      }
      

      【讨论】:

        猜你喜欢
        • 2012-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-22
        • 2020-02-19
        • 2016-04-02
        • 1970-01-01
        相关资源
        最近更新 更多