データが利用可能になるまでブロックするのではなく、udp ソケットで利用可能なデータがあるかどうかを判断することは可能ですか? 複雑になるので、アプリをマルチスレッド化する必要は避けたいと思います。結局のところ、スレッドや同期化を不必要に楽しんでいる人はあまりいないのではないでしょうか。
たとえば、C# では、socket.Available > 0 を呼び出すことができます。
これがTCPソケットの場合は可能ですSocket.getInputStream().available()
が、投稿によるとUDPを使用しています。本当に UDP を使用したいですか?
もしそうなら-いいえ、UDPソケットには「利用可能なバイト」の概念がありません-実際には反対側の何にも接続されていないためです。特定のポートにデータが到着するのをやみくもに聞いているだけです。座って物事が到着するのを待つ必要があります。この場合、 C#socket.Available
は実際にはファサードです。ソケットキューに残っているバイト数を示しているだけです。
独自のスレッドなどを構築するための簡単な代替手段として、Android の非同期タスクを使用できます。
http://developer.android.com/reference/android/os/AsyncTask.html