Android中的ProgressBar仅在完成某些操作后显示

问题描述 投票:0回答:1

当我执行短时操作时,我尝试在Activity中使用ProgressBar。我意识到,当我将ProgressBar可见性设置为true时,它仅在执行操作后才可见。

progressBar.setVisibility(View.VISIBLE);
calculate();

然后我找到了解决方案,我必须在另一个Thread中设置ProgressBar可见性。所以我的问题是:为什么我必须在另一个线程中设置它?

例如,如果我让ProgressBar在创建时保持真正的可见性(在onCreate()中),它将会进展,我可以在那一刻与UI进行交互。我发现它们在一个线程中执行并且没关系。但在我看来,我错了。

android android-progressbar
1个回答
1
投票

Android UI工具包不是线程安全的。这意味着您不得从工作者/后台线程操纵UI。您必须从UI(主)线程对您的用户界面进行所有操作。

Android UI工具包包含android.widgetandroid.view包中的元素

经验法则:

  1. 不要阻止UI线程(不要在UI线程中运行具有未指定时间的操作)
  2. 不要从UI线程外部访问Android UI工具包

这在here中有更详细的解释

使用AsyncTaskLoaders运行后台线程总是允许你在后台线程上分别更新你的用户界面onPostExecute()onLoadFinished()

因此,截至您的问题,您必须从UI线程更新您的ProgressBar而不是从其他线程更新。

© www.soinside.com 2019 - 2024. All rights reserved.