簡體   English   中英

套接字-ListView中的異步圖像加載

[英]Socket - asynchronous image loading in ListView

幫助請解決我的問題。 我使用該代碼從該網站http://www.technotalkative.com/android-asynchronous-image-loading-in-listview/下載異步圖像。 使用HTTP可以正常工作,但是如果我用

URL imageUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection)imageUrl.openConnection();
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
conn.setInstanceFollowRedirects(true);
InputStream is=conn.getInputStream();

在這個

Socket socket1 = new Socket();
socket1.connect(new InetSocketAddress(mSettings.getString(APP_PREFERENCES_IPSERVER, ""), 30100), 5000);
ObjectOutputStream outp1 = new ObjectOutputStream(socket1.getOutputStream());
ObjectInputStream inp1 = new ObjectInputStream(socket1.getInputStream());
outp1.writeObject("ASprUserEdir,-,fileget,-," + url);
outp1.flush();
String messageReceived = (String) inp1.readObject();
int file_size = Integer.valueOf(messageReceived.split(",-,")[1]);
InputStream is=socket1.getInputStream();

然后,如果連接速度很慢,則滾動工作表時,圖片不會顯示在原處。 如何解決? 可能需要其他代碼。 謝謝!

當您嘗試下載圖像時,您需要考慮一些問題。 示例緩存,由於圖像大小以及越來越多的原因,導致內存不足。

最簡單的方法是使用諸如Picassoglide之類的庫。 他們異步下載映像,緩存映像,內存緩存以防止內存不足等。它易於學習和使用。

使用庫畢加索或Glide,然后使用以下代碼

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

請通過以下鏈接獲取有關畢加索的更多詳細信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM