[英]When to call response.body().close()
我有一個使用 OkHttp 的 Android SDK。 在我使用我的 SDK 的示例應用程序中,一切正常。 然而,當 StrictMode 打開時,我的一位用戶得到以下java.lang.Throwable: Explicit termination method 'close' not called
。 我試過在我自己的應用程序中復制這個並啟用 StrictMode 並且沒有收到此錯誤。
我知道我應該調用response.body().close()
但我仍然有點困惑為什么我的應用程序中沒有發生這種情況。 他發送給我的堆棧跟蹤中只包含我的類,因此他的代碼中似乎沒有任何內容導致它。
另外值得注意的是,我的 SDK 發出的請求中只有一個實際讀取了響應。 但這不是我的用戶所說的導致異常的請求。
還有什么可能導致這種情況嗎?
我應該什么時候調用.close()
? 建議在調用execute()
后立即調用它嗎? 關閉正文會阻止它在未來被讀取嗎?
您應該始終調用close()
。 來自OkHttp 的來源:
調用者可以使用響應的
Response.body()
方法讀取響應正文。 為了便於連接回收,調用者應始終關閉響應主體。
一旦你從響應中得到你需要的東西,你應該盡快調用close()
。 將它存儲在一個變量中,然后關閉ResponseBody
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.