これを実装する最良の方法は何でしょうか。私はラウンドで2台の電話機間の通信を許可するために私のpythonサーバーを使用するAndroidアプリを持っています。ラウンドは、ラウンドが始まるまでお互いに話すことができないことを意味し、他の人が応答するまで別のラウンドを送信できないメッセージを送信すると、新しいラウンドを開始します。IntentService、Service、またはAsyncTask
私はIntentServiceを使用すると思っていましたが、サーバを常に起動して停止させるのは間違っていて、asynctaskの問題を心配する必要はありません。それを処理する最善の方法です。サービスを受け取り、クライアントにメッセージを送信するにはどうすればよいでしょうか?
あなたは間違っています: *サービスは、他のアプリケーションオブジェクトと同様に、ホスティングプロセスのメインスレッドで実行されます。これは、あなたのサービスがCPUを集中的に(例えばMP3再生)やブロックする(ネットワーキングのような)操作を行う場合、その作業を行う独自のスレッドを生成するはずであることを意味します。 *サービスはスレッドではありません。これは、(アプリケーションが応答しないというエラーを避けるために)メインスレッドの処理を行う手段ではありません。 マルチスレッドが必要な場合には、そうでない場合に限ります。 – roiberg
IntentServiceは、メインスレッドである@roibergの処理を処理するために、フードの下でAsyncTaskを使用します。 – lilbyrdie
@roiberg正しい。サービスはメインスレッド上で動作します。この回答をより明確にするために、サービスはマルチスレッド(スレッドプール)またはバックグラウンドで非常に長い時間シリアル化されたexecutor/handlerスレッドを保持するのに便利です。 – manjusg