【发布时间】:2018-12-03 21:57:01
【问题描述】:
我知道有类似的问题,但它仍然不能以我当前情况所需的方式回答我的问题。
我有三个活动演示者,每个都需要远程调用某个数据,因此当数据到达时会回调活动演示者。为了创建这个数据监听器,我创建了一个接口监听器,因为所有三个 Presenter 都请求相同的数据并检索它,所以三个 Presenter 都实现了这个接口监听器。
接口监听器:
interface ListenerInterface {
onGotData();
}
演讲者一:
class PresenterOne implements ListenerInterface{
public void getData() {
DataManager dataManager = new DataManager();
dataManager.getData(this);
}
@Override
public void onGotData(Data data) {
//Do something with data
}
}
演示者二与演示者一非常相似:
class PresenterTwo implements ListenerInterface{
public void getData() {
DataManager dataManager = new DataManager();
dataManager.getData(this);
}
@Override
public void onGotData(Data data) {
//Do something with data
}
}
假设 Presenter 3 和前面的完全一样。数据管理器类:
class DataManager {
public void getData(final ListenerInterface listener) {
//Gets data
addOnCompleteListener(new OnCompleteListener<Data data > () {
@Override
public void onComplete (@NonNull DataCall < Data > dataCall) {
listener.onGotData(dataCall.getResults());
}
});
}
}
是否有人会调用所有三个演示者,因为接口是执行调用的接口,还是只调用传递的演示者?如果我遵循这种方式,我有什么需要担心的吗?如果任何熟悉 Android 框架的人都可以提供详细的答案,以便我可以从中学到更多东西,那就太好了。 我想这样做的原因是我想通过类之间的接口进行通信。
对不起,如果这个问题对某些人来说很简单,但我仍在学习。
非常感谢您。
【问题讨论】:
-
您好,希望您每天都能学到更多,成为一名专业人士。别担心,该行业的每个人每天都会学到一些东西。也许你可以看看here 来看看如何在类之间使用接口的一个小例子。如果你不明白这一点,我会尽力给你一个不同的例子。
-
感谢您的积极。该示例确实对您有所帮助,该示例回答了只有在参数中传递的类才会被调用的问题,但是如果有人阅读此内容可以确认,那就太好了。谢谢艾哈迈德!
-
您不必将界面视为对象。接口永远不是做调用的那个。它始终是您的主持人。接口只是告诉“这个对象尊重这个规范”的一种方式,规范由接口定义。因此,当 DataManger 调用 listener.onGotData() 时,它总是在给定对象(给定演示者)上调用此方法。所以只会触发一个
-
好的,我明白了,非常感谢@vincrichaud。
-
嘿@vincrichaud 我知道已经有一段时间了,但是添加您的评论作为答案,我会将其标记为答案
标签: java android architecture mvp