我正在构建一个包含3项活动的Android应用程序;
一个名为DataRequester
的帮助程序类,用于从我的在线数据库中获取数据。
为了性能起见,当我的应用程序启动时,在MainActivity中我从我的在线数据库中预取(使用DataRequester)两个自定义对象列表,并将它们存储在单个StateManager类中。这样,当用户转到MapActivity时,我们不需要再次重新加载相同的列表数据。
我在所有3个活动中都有一个查找数据的方法,并在需要时使用DataRequester
类加载它。数据在回调中返回。
这是我的问题。我在3个不同的活动中有相同的代码,我想保留我的代码DRY,我认为最好将代码整合到BaseActivity类中,并让我的所有三个活动扩展该基类。所以我将所有重复的代码移动到基类,包括回调方法 ......现在我被卡住了。这个重要的提取我的数据工作发生在我的超级/基类...但子类活动不知道它。回调发生在超类中。
如何在我的超类中下载代码并在子类中进行某种回调?解决这种编码困境的最佳方法是什么?
答案 0 :(得分:0)
您可以在此处使用方法覆盖:
BaseActivity :您可以将其设为abstract
,因为无论如何您都不会将其实例化。
void onDataReceived() {
actOnData();
}
abstract void actOnData();
ChildActivity1扩展了BaseActivity
@Override
void actOnData() {
// Act differently based on ChildActivity1 requirements.
}
ChildActivity2扩展了BaseActivity
@Override
void actOnData() {
// Act differently based on ChildActivity2 requirements.
}