因此,我有以下代码:
try{
....
if(serverResp.isSucces()){
callbackListener.onDataLoaded(serverResp);
}
}catch(Exception e){
//...do whatever I have to
}finally{
urlConnection.disconnect();
}我的问题是,何时调用urlConnection.disconnect?大多数示例最后解释了在返回的情况下何时调用它。我理解这种情况,但在这里,我没有返回,而是打电话给听者。在大多数情况下,侦听器回调会触发一个新的活动开始。我想确定的是,我以前所有的连接都关闭了!
因此,主要的问题是:
发布于 2017-05-24 14:14:22
finally是关闭资源的最佳场所。
finally块在退出try/catch块的点之后执行。这种情况发生在下列情况:
try块的末尾try块以任何其他方式退出(外部循环中的break、return、抛出的异常等等)。catch块的末尾。finally可能不会被执行的唯一时候是here。
在这种情况下,如果不引发异常,则在连接关闭之前将执行回调。该连接将在回调完成后关闭(通过完全执行或委托给其他线程)。
请注意,disconnect可能只是确保在更新版本的Java中关闭连接的一种安全方法。您通常会尝试读取整个响应,然后关闭输入流。你可以在这个网站上找到很多关于这方面的讨论。
https://stackoverflow.com/questions/44160716
复制相似问题