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

时间:2019-02-22 19:19:51

标签: android android-progressbar

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

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

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

例如,如果我让 ProgressBar 在创建时具有真实可见性(在 onCreate()中),它将继续进行,并且我可以与 UI < / strong>。我认为它们是在一个线程中执行的,这没关系。但是在我看来,我错了。

1 个答案:

答案 0 :(得分:1)

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

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

经验法则:

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

这在here

中有更详细的解释。

使用AsyncTaskLoaders运行后台线程总是可以让您在后台线程分别返回onPostExecute()onLoadFinished()时更新UI。

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