我正在编写一个应该在后台运行的应用程序。当我按下手机上的后退按钮时,我与服务器的套接字连接已关闭并发生异常。按socket connection
按钮后是否有可能不关闭back
?
05-25 22:32:37.990: E/Receiver(7505): Read: Error
05-25 22:32:37.990: E/Receiver(7505): java.net.SocketException: Socket closed
05-25 22:32:37.990: E/Receiver(7505): at libcore.io.Posix.recvfromBytes(Native Method)
05-25 22:32:37.990: E/Receiver(7505): at libcore.io.Posix.recvfrom(Posix.java:161)
05-25 22:32:37.990: E/Receiver(7505): at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:250)
05-25 22:32:37.990: E/Receiver(7505): at libcore.io.IoBridge.recvfrom(IoBridge.java:553)
05-25 22:32:37.990: E/Receiver(7505): at java.net.PlainSocketImpl.read(PlainSocketImpl.java:485)
05-25 22:32:37.990: E/Receiver(7505): at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:37)
05-25 22:32:37.990: E/Receiver(7505): at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:237)
05-25 22:32:37.990: E/Receiver(7505): at java.io.InputStream.read(InputStream.java:162)
05-25 22:32:37.990: E/Receiver(7505): at stas.tcp.client.Receiver.run(Receiver.java:40)
05-25 22:32:37.990: E/Receiver(7505): at java.lang.Thread.run(Thread.java:818)
我的代码在Receiver
类:
第40行是:while((numBytes = inputStream.read(byteArr))!= -1))
public void run() {
int numBytes = 0;
try {
Log.e("Receiver","");
while((numBytes = inputStream.read(byteArr)) != -1) {
if(!flag){
Log.e("Receiver - thread", "break");
break;
}
for(int i = 0; i < numBytes; i++) {
pouartSupport.storeChar(byteArr[i]);
pouartSupport.checkPacket();
}
}
} catch (Exception e) {
Log.e("Receiver", "Read: Error", e);
}
}