Android:包含许多图片的图库 - 如何根据需要下载图像?

时间:2011-01-06 14:02:17

标签: android load gallery

在Android应用程序中,我有一组缩略图可供下载。当用户使用该应用时,这组缩略图最多可能包含100个或更多项目。

缩略图需要显示在图库中,现在,当显示该图库时,我启动一个线程将所有缩略图从0下载到集合的末尾。这在某些方面很糟糕 - 即使不需要也会下载每个图像,如果图库中心有第30个元素,那么在下载所有前20个图像之前,用户将看不到任何图像

理想情况下,我希望图像可以根据需要下载和显示 - 所以如果第30个元素在图库显示时居中,那么第29,30和31个元素将被下载并显示,然后如果用户向左滚动,将下载28日,27日等。我不确定这是否真实/有效。

我已经尝试启动一个线程来下载图库适配器类(它扩展了ArrayAdapter)中的图像,但是这显然会在每个图像滚动时为每个图像启动一个新线程,因此应用程序变得无法使用。

有没有人对如何实现这一点有任何想法/建议?

干杯, r3mo

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

“我已经尝试启动一个线程来下载图库适配器类中的图像(它扩展了ArrayAdapter),但是这显然会在每个图像滚动时为每个图像启动一个新线程,因此应用程序变得无法使用。”

您可以使用一些具有固定线程数的ThreadPool来防止启动太多线程。

1。)你有ThreadPool有固定数量的线程。 2.)添加要执行的新Runnable   a。)有'休息'线程,它将执行给定的Runnable   b。)池中的所有线程都在“工作”,新的Runnable在池的BlockingQueue中排队,等待执行

答案 2 :(得分:0)

你也可以只有1个线程来下载图像,还有一个要下载的图像列表。

主线程只会在列表中添加一些要下载的图像(如果它们不再可见,可能会删除一些图像)。 下载线程只是从列表中下载图像。

您现在拥有经典的制作人/消费者模式!

希望它有所帮助,