UDP パケットを待機しているアクティブなループでスレッドを実行しています。
メッセージを受信したら処理したい。
毎秒数パケット (~20) を受信する必要があります。
UDPパケットを受信した後にログを記録するだけの、最小限の例を挙げています
while (socketUDP != null) {
message = new byte[6];
packet = new DatagramPacket(message, message.length);
try {
socketUDP.receive(packet);
command = new String (message, 0, packet.getLength());
} catch (IOException e) {
Log.e(LOG_TAG, LOG_TAG + " IOException: " + e.getMessage() );
}
Log.d(LOG_TAG, "test");
}
たとえば、私は 1 秒間に 50 個の UDP パケットを送信し、誰も失われず、Android は 50 個のログ テキスト メッセージ「test」を表示するのに約 3/4 秒かかるため、動作は奇妙です!!
そのため、Android の VM はすべてのパケットをバッファ内のどこかに保存し、可能な場合はそれを処理しているようです!
Android でできるだけ早くデータグラムのパケットを処理する必要があります。
何かが足りないようです。
それを行うための最良の方法はどれですか?!