繁体   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