あなたは基本的にはすでにキューに入れられているとrequeueingされたオブジェクト内のデータを上書きし、同じMessage
オブジェクトを再利用し続けます同じオブジェクトを何度も何度も繰り返します。
このコードは間違っている:
Message msgToActivity = new Message();
DatagramPacket packetIn = new DatagramPacket(receiveData, receiveData.length);
while (true) {
receiveSocket.receive(packetIn);
msgToActivity.obj = new String(receiveData, 0, packetIn.getLength());
msgToActivity.what = 0;
LogComActivity.logcomHandler.sendMessage(msgToActivity);
}
あなたは、単一のMessage
オブジェクトを作成し、それを修正し、ループ内にキューイングされています。
代わりにこれを行います。
DatagramPacket packetIn = new DatagramPacket(receiveData, receiveData.length);
while (true) {
receiveSocket.receive(packetIn);
Message msgToActivity = Message.obtain();
msgToActivity.obj = new String(receiveData, 0, packetIn.getLength());
msgToActivity.what = 0;
LogComActivity.logcomHandler.sendMessage(msgToActivity);
}
このコードは、新しいMessage
オブジェクトにループ内の各時刻を取得し、代わりに新しいものを毎回作成するのリサイクルオブジェクトのグローバルプールからMessage
オブジェクトを要求します。
また、このコール(handleMessage())
内側:
this.obtainMessage();
は、あなたが戻っMessage
オブジェクトと何もしないと、無用であるあなたは、そのコードを必要としない、それを削除します
。。。
元の投稿からすべてのコードを削除したのはなぜですか?私の回答(あなたを助けてくれたと思っています)は現在役に立たなくなっています。 –