如何更快地加载互联网输入流?

时间:2013-04-17 18:55:00

标签: java android inputstream httpresponse

我正在开发一个与网络服务进行通信的Android应用。 webservice给我一些几何文件,因为那些文件真的很大。

因为你不能等到1-3分钟才能收到回复,我需要降低加载时​​间。

所以这里有一些代码:


    long startTime = System.currentTimeMillis();

    InputStream is = httpResponse.getEntity().getContent();
    ByteArrayOutputStream buffer = new ByteArrayOutputStream();

    int nRead;
    byte[] data = new byte[1000000];

    while ((nRead = is.read(data, 0, data.length)) != -1) {
      buffer.write(data, 0, nRead);
    }

    long endTime = System.currentTimeMillis();

    Log.d("ARks", (endTime - startTime) / 1000 + " seconds");

执行此操作所需的时间总是在50到75秒之间(而且文件相当小)。

有没有办法加速这件事?也许某些Android特定的东西允许应用程序更多的带宽?

1 个答案:

答案 0 :(得分:2)

如果知道带宽是您的问题,请压缩您的信息流:http://docs.oracle.com/javase/6/docs/api/java/util/zip/GZIPInputStream.html

如果在处理之前不需要所有数据,请减小缓冲区的大小。这将允许您处理某些对象,而其他对象正在通过网络。