Android 为什么来自presenter的方法可以触发两次,因为来自回调的调用只有一次(EventBus)

Android 为什么来自presenter的方法可以触发两次,因为来自回调的调用只有一次(EventBus),android,firebase,events,event-bus,greenrobot-eventbus,Android,Firebase,Events,Event Bus,Greenrobot Eventbus,我有两个碎片。当第一个片段继续时,我们将看到下一个流 ActivityCallMethod->PresenterCallMethod->RepositoryCallMethod->repositorySendCallBackToPresenter->EventInPresenterTrigger和CallMethodFromView->ViewCallItsMethod---这里是奇怪的---->EventInPresenterTrigger和CallMethodFromView(使用相同的数据

我有两个碎片。当第一个片段继续时,我们将看到下一个流

ActivityCallMethod->PresenterCallMethod->RepositoryCallMethod->repositorySendCallBackToPresenter->EventInPresenterTrigger和CallMethodFromView->ViewCallItsMethod---这里是奇怪的---->EventInPresenterTrigger和CallMethodFromView(使用相同的数据)->ViewCallItsMethod(和重复的数据)

当片段第一次开始工作时,它不会两次从presenter调用方法

那个么,为什么并没有来自存储库的双重回调,但出于某种原因,presenter会触发两次呢

活动代码

@Override
public void addRealUsers(List<OnlineUser> onlineUsers) {
    mAdapter.addUsers(onlineUsers);
}
存储代码

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) {
            }
        });
query.addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
if(dataSnapshot.hasChildren()){
List newUser=new ArrayList();
对于(DataSnapshot userSnapShot:DataSnapshot.getChildren()){
添加(userSnapShot.getValue(OnlineUser.class));
}
last_node=newUser.get(newUser.size()-1.getUid();
last_rating=newUser.get(newUser.size()-1.getRating();
如果(!last_node.equals(last_key)){
newUser.remove(newUser.size()-1);
}否则{
最后一个节点=“结束”;
isMaxData=true;
}
isLoading=false;
EventBus.getDefault().post(新RealUsersListEvent(新用户));
}否则{
isLoading=false;
isMaxData=true;
}
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
事件代码

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;
}
List用户列表;
公共RealUsersListEvent(列表realUsersList){
this.userList=realUsersList;
}
公共列表getRealUserList(){
返回用户列表;
}
公共无效setRealUserList(列表cardList){
this.userList=cardList;
}

当我检查这个事件的用法时,它只出现在一个地方。在userRepository中,记录调用
addListenerForSingleValueEvent()
的次数。确认只调用一次。@DevMike01是,我确认只调用一次。“从存储库”事件也只创建一次。那个演讲者之前在莫西工作。我根据这个删除了所有的东西。但问题仍然是一样的
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;
}