もともとは単純なスレッドとハンドラーを使用していたので、HandlerThreadクラスを見てきましたが、AndroidでNetworkOnMainThreadExceptionが発生したクロッパーが登場しました。
ソケットのようなものをHandlerThreadに導入する方法を理解できないようです。これは、ブロッキングコードを実行する場所です。ただし、ルーパーがある場所であるrunをオーバーライドするべきではないため、HandlerThreadを使用してこれを行うことはできません。
また、メッセージを介してHandlerThreadを呼び出して、ソケットでのリッスンを開始することはできません。これは、それに渡される他のメッセージをブロックするためです。
では、このHandlerThreadクラスは、非ブロッキングのタスク用に設計されていますか?そのようなスレッドをどのように使用してソケットでリッスンできるのか理解できないようですが、メインUIスレッドから通常のスレッドを作成していたときのようにリクエストを処理できます
通常のスレッドでは、実行中にLooper.prepare()とLooper.loop()を呼び出してから、これら2行の間にコードを配置することができます(ハンドラーを作成するためのチェックを使用)が、通信に問題がありますこの新しいスレッドでは、メッセージはスレッドに渡されません。
では、ハンドラーを使用して相互に通信し、ソケットの使用などのタスクを実行できるスレッドを作成するにはどうすればよいですか。
ASyncTaskコメントの使用を探していません。スレッドが相互に通信できるように、自分でスレッドを使用する方法を知りたいです。