在Android应用程序中,我有一组缩略图可供下载。当用户使用该应用时,这组缩略图最多可能包含100个或更多项目。
缩略图需要显示在图库中,现在,当显示该图库时,我启动一个线程将所有缩略图从0下载到集合的末尾。这在某些方面很糟糕 - 即使不需要也会下载每个图像,如果图库中心有第30个元素,那么在下载所有前20个图像之前,用户将看不到任何图像
理想情况下,我希望图像可以根据需要下载和显示 - 所以如果第30个元素在图库显示时居中,那么第29,30和31个元素将被下载并显示,然后如果用户向左滚动,将下载28日,27日等。我不确定这是否真实/有效。
我已经尝试启动一个线程来下载图库适配器类(它扩展了ArrayAdapter)中的图像,但是这显然会在每个图像滚动时为每个图像启动一个新线程,因此应用程序变得无法使用。
有没有人对如何实现这一点有任何想法/建议?
干杯, r3mo
答案 0 :(得分:2)
答案 1 :(得分:1)
“我已经尝试启动一个线程来下载图库适配器类中的图像(它扩展了ArrayAdapter),但是这显然会在每个图像滚动时为每个图像启动一个新线程,因此应用程序变得无法使用。”
您可以使用一些具有固定线程数的ThreadPool来防止启动太多线程。
1。)你有ThreadPool有固定数量的线程。 2.)添加要执行的新Runnable a。)有'休息'线程,它将执行给定的Runnable b。)池中的所有线程都在“工作”,新的Runnable在池的BlockingQueue中排队,等待执行
答案 2 :(得分:0)
你也可以只有1个线程来下载图像,还有一个要下载的图像列表。
主线程只会在列表中添加一些要下载的图像(如果它们不再可见,可能会删除一些图像)。 下载线程只是从列表中下载图像。
您现在拥有经典的制作人/消费者模式!
希望它有所帮助,