【发布时间】:2018-03-20 07:11:31
【问题描述】:
我正在构建一个包含 3 个活动的 Android 应用;
- 主要活动
- 详情活动
- 地图活动
还有一个名为 DataRequester 的助手类,它从我的在线数据库中获取数据。
为了在我的应用程序启动时性能起见,在 MainActivity 中,我从在线数据库中预取(使用 DataRequester)两个自定义对象列表,并将它们存储在单例 StateManager 类中。这样当用户进入 MapActivity 时,我们不需要再次重新加载相同的列表数据。
我在所有 3 个活动中都有一个方法来查找数据,并在需要时加载它,使用 DataRequester 类。数据在回调中返回。
这是我的问题。我在 3 个不同的活动中有相同的代码,我想保持我的代码干燥,我认为最好将代码合并到一个 BaseActivity 类中,并让我的所有三个活动都扩展该基类。所以我将所有重复的代码移到了基类中,包括回调方法......现在我被卡住了。这个重要的获取我的数据的工作发生在我的超级/基类中......但子类活动没有意识到它。回调发生在超类中。
我怎样才能在我的超类中有下载代码,而在子类中有某种回调触发?解决这种编码困境的最佳方法是什么?
【问题讨论】:
-
除了将界面移回之外,您还可以选择采用 RxAndroid 和/或 EventBus/Otto 等库