Я получил tablayout с 2 фрагментами. Когда 1-й фрагмент go при возобновлении работы, мы видим следующий поток
ActivityCallMethod -> PresenterCallMethod -> RepositoryCallMethod -> repositorySendCallBackToPresenter -> EventInPresenterTriggerAndCallMethodFromView --Маршрутизатор_данных_данных_данных_перечисления_объявления_перечисления_объявления_произведения_перечисления_произведения_перечисления_произведения_перечисления_произведения_перечисления_объекты_произведения_представления_представления_произведения_переключения_объявления_произведения_презентации_Презентация_Презентация_Презентация_Ма_изображения_Представления_Презентация_объект_Презентация_вход_Презентации > ViewCallItsMethod (andDuplicateData)
Когда фрагмент начинает работать в первый раз, его метод не вызывается дважды от презентатора.
Так почему нет двойного обратного вызова из репозитория, но по какой-то причине презентатор срабатывает дважды?
ActivityCode
@Override
public void addRealUsers(List<OnlineUser> onlineUsers) {
mAdapter.addUsers(onlineUsers);
}
PresenterCode
ublic class OnlineUsersPresenter {
private OnlineUsersInteractor mInteractor;
private OnlineUsersView mView;
public OnlineUsersPresenter(OnlineUsersInteractor mInteractor, OnlineUsersView view) {
this.mInteractor = mInteractor;
this.mView = view;
}
/**
* Get the real list of the users
*/
@Subscribe
public void inflateReaUserList(RealUsersListEvent event) {
mView.addRealUsers(event.getRealUserList());
}
RepositoryCode
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChildren()) {
List<OnlineUser> newUser = new ArrayList<>();
for (DataSnapshot userSnapShot : dataSnapshot.getChildren()) {
newUser.add(userSnapShot.getValue(OnlineUser.class));
}
last_node = newUser.get(newUser.size() - 1).getUid();
last_rating = newUser.get(newUser.size() - 1).getRating();
if (!last_node.equals(last_key)) {
newUser.remove(newUser.size() - 1);
} else {
last_node = "end";
isMaxData = true;
}
isLoading = false;
EventBus.getDefault().post(new RealUsersListEvent(newUser));
} else {
isLoading = false;
isMaxData = true;
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
EventCode
List<OnlineUser> userList;
public RealUsersListEvent(List<OnlineUser> realUsersList) {
this.userList = realUsersList;
}
public List<OnlineUser> getRealUserList() {
return userList;
}
public void setRealUserList(List<OnlineUser> cardList) {
this.userList = cardList;
}
И как я проверял использование этого события только в одном месте. В пользовательском репозитории