這是一個帶有Socket連接的線程。Android:套接字連接導致時滯和很多GC動作
服務器向此套接字發送隨機int數(每10 ms)。 問題是,經過一段時間後,接收數據的巨大滯後和LogCat打印了大量的「GC_CONCURRENT釋放」消息。
public class TcpSocketThread extends Thread {
Context context;
String ip;
int port;
public TcpSocketThread(Context con, String ip, int port) {
context = con;
this.ip = ip;
this.port = port;
}
@Override
public void run() {
Socket client;
try {
client = new Socket(ip, port);
BufferedReader in = new BufferedReader(new InputStreamReader(
client.getInputStream()));
String msg;
while (true) {
if (in.ready()) {
msg = in.readLine();
Intent intent = new Intent(BLUETOOTH_DATA);
intent.putExtra(BLUETOOTH_DATA_STRING, msg);
context.sendBroadcast(intent);
Log.v("Tcp-Socket-Thread", "msg: " + msg);
}
}
} catch (UnknownHostException e) {
Log.v("client", "unknown host" + e);
} catch (IOException e) {
Log.v("client", "No I/O" + e);
}
}
}