さて、アクティビティ(UI)とサービス(バックグラウンドポーリング)を備えたAndroidアプリがあります。この2つは、AIDLを使用して複雑に接続されています(コールバックを含むため、二重通信、IPCなど)。
二人の話はいつでも私はそれを使っています。
ただし、Applicationクラスも拡張して、2つが共通のデータオブジェクトを共有できるようにしました。したがって、アプリケーションは、サービスが常に使用しているUserオブジェクトを保持し、アクティビティは実行中にそのオブジェクトにアクセスすることもできます。
ユーザーがUIの更新をトリガーすることがあるため、アプリケーションにはアクティビティへの弱参照もあります(コンテキストリークを回避するため)。
だからそれは
Activity (UI) ---> Application <--- Service
を行うことで、サービス内でUIイベントをトリガーできます
_app = (FooApplication)this.getApplication();
FooActivity uiRef = _app.getUIReference().get();
if (uiRef != null) {
uiRef.updateSomeDisplay();
}
だから私はそれを理解していません。UIを弱参照し、UIが存在するかどうかを確認し、そのメソッドを呼び出すだけで、複雑なAIDL呼び出しに煩わされるのはなぜですか。