用于布局视图的android后台活动

时间:2012-05-09 00:29:55

标签: android android-layout android-asynctask

我需要在页面上加载30多张图片(带有预告片文字)。我通过AsyncTask加载所有图像,但我无法修改当前布局,因为您只能对主线程上的视图执行修改。什么是异步加载一切的最佳方法,以便我的应用程序不必在“页面加载”期间挂起?

3 个答案:

答案 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
    }  
});