我有一个使用OkHttp的Android。在我使用我的SDK的示例应用程序中,一切都很好。然而,当StrictMode打开时,我的一个用户将获得以下java.lang.Throwable: Explicit termination method 'close' not called
。我已经尝试过在我自己的应用程序中复制StrictMode,但是没有得到这个错误。
我知道我应该打电话给response.body().close()
,但我仍然有点困惑,为什么我的应用程序没有发生这种情况。他发送给我的堆栈跟踪中只有我的类,所以他的代码中没有任何东西会导致这种情况。
另外值得注意的是,我的SDK发出的请求中只有一个实际上读取了响应。但这不是我的用户说是导致异常的请求。
还有什么能导致这件事的吗?
我什么时候打电话给.close()
?在调用execute()
之后立即调用它是明智的吗?关闭身体会不会阻止人们在未来阅读?
发布于 2015-08-18 19:20:25
你应该一直打电话给close()
。来自奥赫特氏源
调用方可以使用响应的
Response.body()
方法读取响应体。为便于连接回收,呼叫者应始终关闭响应体。
您可能应该在从响应中获得所需的信息之后立即打电话给close()
。将其存储在变量中,然后关闭ResponseBody
。
https://stackoverflow.com/questions/32080181
复制相似问题