簡體   English   中英

何時調用 response.body().close()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM