好的,所以我有一个带有 Activity (UI) 和 Service (background polling) 的 android 应用程序。两者使用 AIDL 错综复杂地连接(包括回调,因此它是双工通信、IPC 等)。
任何时候两人说话我都在使用它。
不过,我还扩展了 Application 类 - 以便两者可以共享公共数据对象。所以Application持有一个Service一直在使用的User对象,Activity在运行的时候也可以访问它。
应用程序还具有对 Activity 的 WeakReference(以避免上下文泄漏),因为用户有时会触发 UI 更新。
所以看起来像
Activity (UI) ---> Application <--- Service
我可以通过执行来触发服务中的 UI 事件
_app = (FooApplication)this.getApplication();
FooActivity uiRef = _app.getUIReference().get();
if (uiRef != null) {
uiRef.updateSomeDisplay();
}
所以我不明白。当我只是弱引用 UI、查看它是否存在并调用它的方法时,为什么还要麻烦复杂的 AIDL 调用。