在我的Android应用程序关闭连接时(比如关闭WiFi)我收到了无数的这条日志消息[cds] shutdowninput in read
,这会中断我的应用程序并使其进行大量不必要的输入检查,I& #39; m使用java套接字编程我尝试通过调用isInputShutdown()
来检查该问题,但没有得到任何结果,我正在尝试:
public String getServerResponse() throws Exception{
while(true){
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(), Charset.forName("UTF-8")));
if(xbmc_socket.isInputShutdown()){
return "stopped";
}else{
//continue(and that's what it always doing)
}
}
}
答案 0 :(得分:1)
我的问题是因为我将BufferedReader
声明为本地变量(如我在问题中的代码中所示),并导致在结尾处打开套接字连接这个连接从我这边或从另一边结束。
因此,为了克服这个问题,我将BufferedReader
声明为全局变量,这使我能够在连接关闭时处理它,比如手动关闭套接字或做任何适合我的应用最好:
public BufferedReader in;
public String getServerResponse() throws Exception{
while(true){
in = new BufferedReader(new InputStreamReader(socket.getInputStream(), Charset.forName("UTF-8")));
// the rest of the code
}
}