我正在阅读来自同一服务器的图像列表,但图像名称不同。
for(int i=0;i<moviesL.size();i++)
{
try
{
lName.add(moviesL.get(i).getMovieName());
URL url = new URL(moviesL.get(i).getImageUrl());
URLConnection conn = url.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
images.add(BitmapFactory.decodeStream(bis));
}
catch (Exception e)
{
e.printStackTrace();
}
}
加载时间太长。
这个问题还有其他问题吗?
答案 0 :(得分:1)
您可以下载多线程:
首先,您必须创建一个Thread类,用于下载图像并将其存储在图像列表中。
class GetImageThread extends Thread {
URL url;
LinkedList<Bitmap> images;
public GetImageThread(URL url, LinkedList<Bitmap> images) {
this.url = url;
this.images = images;
}
public void run() {
try {
URLConnection conn = this.url.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
this.images.add(BitmapFactory.decodeStream(bis));
} catch (Exception e) {
e.printStackTrace();
}
然后你为主程序中的每部电影开始一个主题:
LinkedList<GetImageThread> threads = new LinkedList<GetImageThread>();
for(int i=0;i<moviesL.size();i++) {
GetImageThread thread = new GetImageThread(moviesL.getImageURL(), images);
threads.add(thread);
thread.start();
}
然后你必须等待所有线程完成。
for(GetImageThread thread : threads) {
thread.join();
}
最后一个提示: 使用迭代器循环而不是int循环总是更好。
for(Movie movie : movies)
而不是
for(int i=0; i<movies.size(); i++)