2012-07-19 43 views
1

我试图在活动显示后运行一些脚本,我从网络加载一些图像并动态地在活动中显示它们。我正在运行多个runnables,每个可运行的调用一个Asynctask(阅读图像并分配给ImageView,图像视图是在onCreate函数中创建的),但只有在所有可运行的asynctasks完成后才会显示活动。显示活动后执行代码

我希望你能帮助我实现这一点,我所看到的是显示活动,然后一个接一个地加载和显示图像。

public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 

    if (!hasFocus) 
     return; 
    Handler h = new Handler(); 
    Runnable[] r; 
    int i = 0; 
    r = new Runnable[files.length]; 
    for (i = 0; i < files.length; i++) { 
     final int j = i; 
     r[i] = new Runnable() { 
      public void run() { 
       ViewGroup vg = (ViewGroup) findViewById(R.id.RootView); 

       Log.v("ASYNC", "Starting Call " + j); 
       // new BitmapWorkerTask().execute(img, i); 
       new BitmapWorkerTask(img, j).execute(); 
       vg.invalidate(); 
      } 
     }; 
     h.post(r[i]); 
     Log.v("ASYNC", "Posted " + i); 
    } 
    return; 
}; 
+0

有多少图像?我可能倾向于产生一个AsyncTask来一个接一个地检索图像。 – barry 2012-07-19 22:46:17

+0

使用一个AsyncTask,你可以使用publishProgress()来更新刚下载的图像的UI, – barry 2012-07-20 12:21:24

回答

0

onWindowFocusChanged(boolean hasFocus)不是Activity生命周期方法。相反,您应该使用onCreate来解除您的任务。如果加载需要很长时间,则可以显示某种进度微调器。