Java 何时调用response.body().close()

Java 何时调用response.body().close(),java,android,okhttp,Java,Android,Okhttp,我有一个使用OkHttp的Android SDK。在我使用SDK的示例应用程序中,一切正常。但是,当StrictMode打开时,我的一个用户得到了以下java.lang.Throwable:Explicit termination method“close”未调用。我曾尝试在自己的应用程序中使用StrictMode进行复制,但没有出现此错误 我知道我应该调用response.body().close(),但我仍然有点困惑,为什么我的应用程序中没有出现这种情况。他发送给我的堆栈跟踪中只有我的类,所

我有一个使用OkHttp的Android SDK。在我使用SDK的示例应用程序中,一切正常。但是,当StrictMode打开时,我的一个用户得到了以下
java.lang.Throwable:Explicit termination method“close”未调用
。我曾尝试在自己的应用程序中使用StrictMode进行复制,但没有出现此错误

我知道我应该调用
response.body().close()
,但我仍然有点困惑,为什么我的应用程序中没有出现这种情况。他发送给我的堆栈跟踪中只有我的类,所以他的代码中似乎没有任何东西导致它

另外值得注意的是,我的SDK发出的请求中只有一个实际读取了响应。但这不是我的用户所说的导致异常的请求

还有什么其他原因可能导致这种情况吗


我应该什么时候调用
.close()
?在调用
execute()
之后立即调用它是否可取?关闭正文是否会阻止将来读取它?

您应该始终调用
close()
。发件人:

调用方可以使用响应的
response.body()
方法读取响应正文。为了便于连接循环,呼叫者应始终关闭响应主体


您可能应该在从响应中获得所需信息后立即调用
close()
。将其存储在变量中,然后几乎总是关闭
响应库-
字符串()
字节()
关闭themselves@ItaiHanski,你确定吗?我在密码里找不到证据。@AleksandarStojadinovic是的。查看上的文档。每个方法都需要调用
close()
,除了
string()
bytes()
@ItaiHanski,你说得对,对不起。谁知道我在看哪段代码……问题是,如果okhttp接口是异步运行的,
close()
方法是否也会结束线程?