Java Sockets を使用して Game Servers と通信するシンプルなマルチプレイヤー Android ゲームを開発しています。フリーズしない UI を作成するためにService
、接続を介してサーバーと通信するためのクラスを Android アプリで作成することにしましたSocket
。データ交換は JSON 形式で行われます。
これで、ゲームのプレイ全体で単一のソケット接続が維持され、サーバーとの間でデータ交換が行われますが、Android で実行されているゲーム クライアントで発生するイベントに基づいています。
例えば; ユーザーがボタンをタップすると、一部のデータがサーバーに送信され、サーバーは一部のデータで応答します。それまで、クライアントは待機し、データが到着するとアクティビティの UI が更新され、クライアントは再び何らかのアクションを実行します。データはサーバーに送信されます。
クライアントがサーバーからのデータを待っている間、Activity のコントロールを無効にして、サーバーからデータが到着するまでユーザーがアクションを実行しないようにします。また、Activity で待機中のダイアログを表示して、ユーザーにそのアプリであることを知らせます。は凍結されておらず、待機中です。
さて、Android サービスは主に 、 メソッドで動作するonCreate()
ためonStart()
、onDestroy()
ユーザーの介入なしにバックグラウンドで何かを実行すると思います。したがって、サーバーに送信するためにユーザーからの入力が必要な (またはユーザーが入力するまで待機する) アプリの場合Service
、この場合、クラスをどのように使用しますか? また、そのようなシナリオでサービスを使用する以外に、他に選択肢はありますか?
また、単一の Socket connectionを使用してサーバーと通信する 2 つのアクティビティがアプリにあることに注意してください。