【问题标题】:Socket - asynchronous image loading in ListViewSocket - ListView 中的异步图像加载
【发布时间】:2017-05-22 12:03:20
【问题描述】:

请帮忙解决我的问题。我使用此站点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();

然后,如果连接速度很慢,如果滚动工作表,则图片不会显示在其位置。如何解决这个问题?也许需要为此使用不同的代码。 谢谢!

【问题讨论】:

    标签: android image sockets listview asynchronous


    【解决方案1】:

    当您尝试下载图像时,您需要考虑一些问题。示例缓存,由于图像大小导致的内存不足等等。

    最简单的方法是使用诸如Picassoglide 之类的库。他们异步下载图像,缓存图像,内存缓存以防止内存不足等。它易于学习和使用。

    【讨论】:

    • 您提供的库使用 http,我需要一个套接字
    【解决方案2】:

    使用图书馆毕加索或滑翔 然后使用以下代码

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

    请通过以下链接了解更多关于Picasso的详细信息

    【讨论】:

    • 您提供的库使用 http,我需要一个套接字
    • 可以通过socket下载图片,交给毕加索在image view中绘制。
    猜你喜欢
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多