0

我正在尝试解决这个问题,现在我有一个详细信息页面活动(根据从 ListView 中选择的项目从数据库动态加载)。每个详细信息页面可以有 1 到 5 张图像,这些图像是从在线服务器下载的。我遇到的问题是,在下载图片之前,活动没有显示。

基本上,直到 onCreate 完成,活动才会显示。我正在使用线程下载图像,因此 UI 不会冻结,我的问题是,我可以在哪里下载 ImageView 并将其设置为下载的位图,以便用户在单击列表项后立即看到活动和信息和然后下载并设置下载后的图像?

我尝试将线程放在 onResume 上,但我认为它也无济于事。最好的方法是什么?

问候,

乔治

4

2 回答 2

1

您需要实现AsyncTask。它在后台线程上执行并防止主线程阻塞。您只需创建一个扩展 AsyncTask 的类,如下所示

编辑- 是的,这将在图像下载之前显示您的活动。您只需在 onCreate() 中调用 AsyncTask 的 execute() 方法。查看上面的 AsyncTasks 页面以获得完整概述。如果您的 AsyncTask 尚未完成,您只需要注意配置更改,实现起来非常简单。

您可能还想研究在内存中缓存您的位图,以防止它们被不必要地再次下载。

public class DownloadItemDetails extends AsyncTask<String, Void, ArrayList<Bitmap>{

protected ArrayList<Bitmap> doInBackground(String...params){

 //Download each Bitmap here, and add them to a list to be displayed later


}

protected void onPostExecute(ArrayList<Bitmap> results){

  //This method executes on the main thread, so after your downloads finish
  //You can set your imageviews in your Details Page here


}

}

于 2013-07-07T23:06:33.147 回答
0

根据你的好奇心让用户开心,我认为你必须使用来自 Github 的Android Universal Image Loader库。该库为您提供异步图像加载、缓存和显示。

您也可以使用来自 Github 的ShutterBug - Remote Image Loader进行相同的操作。它还获取远程图像并缓存它们。它特别适合在列表、网格和地图中显示远程图像。

于 2013-07-07T23:14:18.800 回答