これはソケット接続を持つスレッドです。
サーバーはランダムな int 値をこのソケットに送信します (10 ミリ秒ごと)。問題は、しばらくするとデータの受信が大幅に遅れ、LogCat が「GC_CONCURRENT freed」メッセージを大量に出力することです。
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);
}
}
}