2013-04-17 20 views
1

我正在開發一個與Web服務進行通信的Android應用程序。 Web服務給我一些幾何文件,因爲這些文件可以變得非常大。如何更快加載Internet輸入流?

因爲你不能等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特定的東西,讓應用程序更多的帶寬?

回答

2

如果您知道帶寬是你的問題,你的壓縮碼流:http://docs.oracle.com/javase/6/docs/api/java/util/zip/GZIPInputStream.html

如果你並不需要所有的數據,然後才能對其進行處理,減少您的緩衝區的大小。這將允許您處理一些物體,而其他物體正在穿過電線。

+0

我不需要壓縮服務器上的流並直接將壓縮流發送到我的客戶端嗎? – AlmostBearded

+1

@PeterKnukeOberrauner - 是的,但作爲一個新用戶,我只能在答案中放一個鏈接。 – parsifal

+0

你想在你的答案中加入什麼鏈接? 哦。我沒有足夠的權限來編輯服務器代碼。 :/ – AlmostBearded