我正在寫一個使用HttpURLConnection下載一些數據的Android應用程序。 getInputStream()方法返回一個可以從中讀取數據的InputStream。我從這個流中讀取之前存儲的數據在哪裏?是否全部下載並且網絡堆棧正在照顧它?或者仍然有可能需要從服務器檢索數據?我可以關閉連接並仍然從InputStream中讀取嗎?我的問題是在性能方面,並且在數據量大的情況下做一些負責任的事情。在讀取之前,由HttpURLConnection返回的InputStream中的數據存儲在哪裏?
2
A
回答
2
從這個流中讀取之前存儲的數據在哪裏?
(我不知道。你必須閱讀源代碼。)
它是所有下載和網絡堆棧正在舉行關於它照顧?
不,這是一個流。數據以字節流形式到達,您可以從流中讀取數據。
或者是否仍然有數據需要從服務器中檢索?
是的,這是正常情況,特別是當有效載荷重量超過幾千字節時。
我可以關閉連接並仍然從InputStream中讀取嗎?
簡短的回答:第
你的意思是呼籲從HttpURLConnection
disconnect()
?不知道是否有可能,但我不會那樣做。這表明你不想在不久的將來發出後續請求。這可能意味着連接將在物理上關閉。
還是你的意思是叫InputStream.close()
?我很確定,當您嘗試從封閉的流中讀取時,您會得到某種IllegalStateException
或IOException
。
通常HttpURLConnection
是您的應用程序的不錯選擇。如果您遇到任何問題,您可以查看此(不完整)list of libraries and helpers,您可以使用它來使您在Android上執行HTTP請求時更輕鬆。也許你可以利用android.app.DownloadManager。
相關問題
- 1. InputStream在Android中使用HttpUrlConnection返回0
- 2. Gattlib read_by_handle函數:讀取的數據存儲在哪裏?
- 3. 存儲物理載波檢測返回的數據在哪裏?
- 4. 在哪裏存儲數據?
- 5. 數據存儲在哪裏?
- 6. HttpURLConnection讀取InputStream兩次
- 7. HttpURLConnection的切割的InputStream返回
- 8. 我的BigQuery數據存儲在哪裏?
- 9. ByteArray的數據存儲在哪裏?
- 10. 在哪裏存儲我的數據?
- 11. 在哪裏存儲jquery的數據?
- 12. EXCEL Sheet的數據在哪裏存儲?
- 13. 存儲MongoDB的數據在哪裏SailsJS
- 14. ProfileBase.Save()存儲我的數據在哪裏?
- 15. UDP存儲的數據在哪裏?
- 16. HttpServletRequest InputStream讀取返回-1
- 17. 函數的返回值在哪裏存儲?
- 18. 在哪裏存儲由linux軟件生成的數據文件?
- 19. cck「數值」數據存儲在哪裏?
- 20. Redis在哪裏存儲數據
- 21. 常量數據應存儲在哪裏?
- 22. 存儲視圖數據在哪裏?
- 23. Content Provider在哪裏存儲數據?
- 24. H2數據庫存儲在哪裏?
- 25. Magento訂單數據存儲在哪裏?
- 26. Tridion存儲元數據值在哪裏?
- 27. HttpRuntime.Cache在哪裏存儲數據?
- 28. KeyChain數據存儲在哪裏?
- 29. Titanium:SQLite數據庫存儲在哪裏?
- 30. Drupal在哪裏存儲NODE數據?