在安卓系统中,类consumeContent()或org.apache.http.HttpEntity的目的是什么?
什么时候应该使用它,它会有副作用吗?
我正在尝试修复一个应用程序中的一个bug,该应用程序使用HttpClient向服务器发出请求,有时如果一个特定请求失败,它将随后失败,尽管互联网是安全的。应用程序在输入流读取结束时调用此方法。
发布于 2014-02-17 00:29:57
正如@Sotirios建议的那样,HttpEntity.consumeContent()是不推荐的,因此在可行时请使用EntityUtils.consume(HttpEntity)。
然后,让我们泛泛地讨论一下如何使用HttpEntity。使用HttpEntity可以确保所有分配给该实体的资源都被取消分配。这意味着:
什么时候该用呢?
当不再需要连接资源时,您应该释放它们。使用HttpEntity可以为您做到这一点。
会有副作用吗?
我不知道服用HttpEntity有什么副作用。
发布于 2014-02-16 23:25:43
正如您在javadoc中所看到的那样,不推荐使用该方法。别用它。它依赖于实现。但应按所述加以实施:
调用此方法是为了指示不再需要此实体的内容。由于此方法调用,所有实体实现都将释放所有分配的资源。
相反,您应该使用EntityUtils.consume(HttpEntity),它的实现方式如下
public static void consume(final HttpEntity entity) throws IOException {
if (entity == null) {
return;
}
if (entity.isStreaming()) {
final InputStream instream = entity.getContent();
if (instream != null) {
instream.close();
}
}
} 如果有必要,它只是简单地关闭底层InputStream。
https://stackoverflow.com/questions/21818169
复制相似问题