ネットワーク通信用のイベント ディスパッチャーを実装したいと考えています。アクティビティは、次のような関数を使用して、このディスパッチャーにリスナーを登録する必要があります。
void addListener(String type, Listener listener)
一方、サーバーをリクエストするには、次のような関数が必要です。
void request(String type, JSONObject data)
サービスを使用して接続を保持し、イベントをディスパッチすることにしたのは、次の 2 つの理由からです。
- すべてのアクティビティからアクセスできるようにする
- Android アプリに指定されたライフサイクルを使用する
このサービスは他のアプリケーションから見えてはならないので、IPC は必要ありません。サービスをアクティビティにバインドし、android.os.IBinder を使用して通信用の android.os.Messenger を作成しようとしました。(ここで説明したように: Bound Services ) しかし、メッセージングとメッセージへの応答は、私の要件に実際には適合しないと思います。リスナーをサービスに登録し、それらのリスナーを呼び出してアクティビティのビューを操作する最良の方法は何ですか? もっと難しくするために: サービスにスレッドを使用して、リクエスト時に UI をブロックしないようにするにはどうすればよいでしょうか? 誰かがそれを行う方法や調査するための良いリソースを手に入れましたか? ありがとうございました :)