私はAndroid上でUDPベースのチャットクライアントを構築することについて学校の課題を持っています。さて、私の最初のアイデアは、サービスを開始するアクティビティを作成し、サービスがすべてのネットワークを処理し、アクティビティがすべての入力と出力を処理するようにすることでした。しかし、問題が見つかりました。
startCommand関数が開始してsocket.receiveを呼び出してネットワークメッセージの受信を開始するようにサービスを開始しようとすると、アクティビティからサービスに入力を渡すことができるようにサービスをバインドできません(入力=ユーザーが送信するメッセージ送信したい)。ハングし、ANR例外がスローされます。バインドするだけの場合(receiveが呼び出されないようにするため)、チャームのように機能します。
たぶん私はこの問題に正しく取り組んでいません。または、受信呼び出しをブロックしているときにサービスをバインドするように機能する必要がありますか?