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