要在退出时关闭Android Java Socket客户端,你需要在合适的时机调用Socket的close()方法。以下是一个使用多线程的示例代码,可以在退出时关闭Socket客户端:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class ClientThread extends Thread {
private Socket socket;
private PrintWriter out;
private BufferedReader in;
public ClientThread(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// 在这里进行Socket的读写操作
} catch (IOException e) {
e.printStackTrace();
} finally {
// 在退出线程时关闭Socket
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
if (socket != null) {
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
// 在Activity或其他地方创建并启动线程
Socket socket = new Socket("服务器地址", 端口号);
ClientThread clientThread = new ClientThread(socket);
clientThread.start();
// 在退出时关闭Socket
clientThread.interrupt();
这里使用了一个ClientThread
类来处理Socket的读写操作,当需要退出时,可以调用clientThread.interrupt()
方法来关闭Socket。在ClientThread
的run()
方法中,当发生异常或线程退出时,关闭Socket连接。请根据实际情况修改代码中的服务器地址和端口号。