サーバーとの安定した接続を確立するには、サービスが必要です。
アクティビティとサービスは、双方向の通信を行う必要があります。
ここに私が知っているオプションがあります
- インテント サービスを使用する
- Service クラスを拡張 (別のプロセスで実行する) し、Messaging を使用して通信する
私の考え:
インテント サービスは優れており、独自のスレッドで実行されますが、タスクが完了すると停止します。私はそれをしたくありません。たとえば、何らかの理由で接続が中断された場合、サービスを終了するのではなく、再接続を試みる必要があります。
サービスクラスの拡張は理にかなっています。私は以前、サービスとの通信にメッセージングを使用するプロジェクトに取り組んでいました。ここでの問題は、プロジェクトが成長するにつれて、通信の管理が難しくなることです。
サービスが別のプロセスまたはスレッドで実行され、何らかの理由 (START_STICKY など) で終了した場合に再度開始する必要があるアプローチを探しています。
また、通信が簡単で、 OttoやEventBusのようなものが使用できるとよいでしょう。
編集:問題は、それを実装する理想的な方法は何ですか。これにより、メッセージを処理する必要がなくなり、STICKY サービスが提供されます。