我正在开发一个Android应用程序,在这里我正在使用 ProgressBar ,我正在使用runOnUiThread()
从{{strong> VISIBLE / GONE {1}} AsyncTask的方法,我没有找到除doInBackground()
之外的其他地方适合使VISIBLE / GONE ProgressBar满足UI要求。
在这个编码场景中,ProgressBar是可见的但不是旋转的,当我从Activity的doInBackground()
方法创建可见的ProgressBar时它会旋转。
我不知道为什么会发生这种情况,我访问了Stackoveflow上的几篇文章,他们说UI线程无法旋转ProgressBar,因为它可用于处理其他任务以便修复我无法找到其他使其运作的方式。
所以请帮助我解决这个问题。 这是我用来制作VISIBLE / GONE ProgressBar的代码。
onCreate()
答案 0 :(得分:0)
尝试在清单文件中添加以下行:
<activity android:name=".MainActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
>
在这里,替换&#34;。主要活动&#34;到您使用异步任务代码的那个活动。
答案 1 :(得分:0)
在 onPreExecute 方法中显示进度条,并在 onPostExecute 方法中隐藏进度条。这应该解决您的问题,因此您不需要使用runOnUIThread方法
答案 2 :(得分:0)
不要将您的UI代码放在doInBackground()上(doInBackground()在后台线程上执行)。这会崩溃,因为您试图在另一个线程中访问UI线程的对象(在本例中为View对象)。
如果您想更新进度条:
publishProgress(整数...进度)
@Override
protected String doInBackground(String... f_url) {
// Do your background tasks
publishProgress(progress);
}
覆盖onProgressUpdate()方法(您可以在此安全地访问View对象)
protected void onProgressUpdate(Integer... progress) {
// Updates your progress bar here
}