我需要在页面上加载30多张图片(带有预告片文字)。我通过AsyncTask加载所有图像,但我无法修改当前布局,因为您只能对主线程上的视图执行修改。什么是异步加载一切的最佳方法,以便我的应用程序不必在“页面加载”期间挂起?
答案 0 :(得分:0)
为什么不能修改布局?对于AsyncTask
,您有onProgressUpdate保证在UI线程上运行。您只需在doInBackground
代码中致电publishProgress。
==更新==
private class LoadImageTask<Url, String, String> extends AsynTask{
doInBackground(Url... urls){
for(int i=0; i<urls.length; i++){
File img = DownloadImage(urls[i]); // Your download method..
publishProgress(img.filename); // Suppose it is saved in sd card
// publish progress will call onProgressUpdate immediately, but on different thread
}
}
onProgressUpdate(String filename){
// Update the UI.. this method will run on UI thread
displayImage(filename);
}
}
答案 1 :(得分:0)
我认为你不能在后台构建一个视图。您最好的选择是显示进度拨号,以便用户了解应用正忙的原因。
答案 2 :(得分:0)
如果您的课程扩展了活动,您可以使用
runOnUiThread(new Runnable() {
public void run() {
//Update UI elements in this block
}
});