我必须将几张图片加载到主线程中,并且我想在发生这种情况时显示加载对话框,但不知怎的,我无法显示进度对话框......
我的代码如下:
private ProgressDialog progress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.background);
progress = ProgressDialog.show(this, "",getString(R.string.background_loading), true);
LoadBackgrounds loadB = new LoadBackgrounds();
new Thread(loadB).start();
}
public class LoadBackgrounds implements Runnable {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
loadPictures();
progress.dismiss();
}
});
}
}
必须在loadPictures()
内调用 runOnUiThread
,因为它会修改视图。
那么,为什么在图片加载时没有显示进度对话框?
答案 0 :(得分:5)
我不是百分百肯定,但这是我的猜测:
runOnUiThread()
的内部,它将该线程与UIThread合并。loadPictures()
可能会减慢UIThread的速度,这可能是您首先没有看到进度对话框的原因,加载完成后您就会将其解除。Skipped X frames! The application may be doing too much work on its main thread.
个消息。我的建议并取决于您的loadPictures()
方法实际执行的操作:使用AsyncTask,或者当您访问服务器以获取图片时,请检查Volley
或RetroFit
等库并使用他们来获取数据。