Java 未打开包含的活动时,将对我的firebase addvalueeventlistener执行操作 私有FirebaseAuth mAuth; 私有查询getChatsList; 私有值EventListener GetChatsListener; 私人适配卡列表适配卡列表; 私有列表提供者指南; 私人名单提供者姓名; 私人回收视图聊天室回收视图; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity\u chats\u列表); mAuth=FirebaseAuth.getInstance(); providerUids=新的ArrayList(); providerNames=新的ArrayList(); ChatsRecycleView=findViewById(R.id.ChatsRecycleView); LinearLayoutManager layoutManager=新的LinearLayoutManager(ChatsListActivity.this); layoutManager.setStackFromEnd(true); layoutManager.setReverseLayout(true); setLayoutManager(layoutManager); getChatsList=FirebaseDatabase.getInstance().getReference(“用户”).child(mAuth.getCurrentUser().getUid()).child(“聊天”).orderByChild(“详细信息/lastInteraction”); GetChatsListener=新值EventListener(){ @凌驾 public void onDataChange(@NonNull DataSnapshot DataSnapshot){ providerUids.clear();providerNames.clear(); 对于(DataSnapshot ds:DataSnapshot.getChildren()){ 字符串providerUid=ds.getKey(); String providerName=ds.child(“详细信息”).child(“对立名称”).getValue(String.class); providerUid.add(providerUid); providerName.add(providerName); adapterChatsList=新的adapterChatsList(ChatsListActivity.this、providerUids、providerNames); adapterChatsList.notifyDataSetChanged(); chatsRecyclerView.setAdapter(adapterChatsList); } } @凌驾 已取消的公共void(@NonNull DatabaseError DatabaseError){ } }; } @凌驾 受保护的void onStart(){ super.onStart(); getChatsList.addValueEventListener(GetChatsListener); } @凌驾 受保护的void onStop(){ super.onStop(); 如果(GetChatsListener!=null){ getChatsList.removeEventListener(GetChatsListener); } }

Java 未打开包含的活动时,将对我的firebase addvalueeventlistener执行操作 私有FirebaseAuth mAuth; 私有查询getChatsList; 私有值EventListener GetChatsListener; 私人适配卡列表适配卡列表; 私有列表提供者指南; 私人名单提供者姓名; 私人回收视图聊天室回收视图; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity\u chats\u列表); mAuth=FirebaseAuth.getInstance(); providerUids=新的ArrayList(); providerNames=新的ArrayList(); ChatsRecycleView=findViewById(R.id.ChatsRecycleView); LinearLayoutManager layoutManager=新的LinearLayoutManager(ChatsListActivity.this); layoutManager.setStackFromEnd(true); layoutManager.setReverseLayout(true); setLayoutManager(layoutManager); getChatsList=FirebaseDatabase.getInstance().getReference(“用户”).child(mAuth.getCurrentUser().getUid()).child(“聊天”).orderByChild(“详细信息/lastInteraction”); GetChatsListener=新值EventListener(){ @凌驾 public void onDataChange(@NonNull DataSnapshot DataSnapshot){ providerUids.clear();providerNames.clear(); 对于(DataSnapshot ds:DataSnapshot.getChildren()){ 字符串providerUid=ds.getKey(); String providerName=ds.child(“详细信息”).child(“对立名称”).getValue(String.class); providerUid.add(providerUid); providerName.add(providerName); adapterChatsList=新的adapterChatsList(ChatsListActivity.this、providerUids、providerNames); adapterChatsList.notifyDataSetChanged(); chatsRecyclerView.setAdapter(adapterChatsList); } } @凌驾 已取消的公共void(@NonNull DatabaseError DatabaseError){ } }; } @凌驾 受保护的void onStart(){ super.onStart(); getChatsList.addValueEventListener(GetChatsListener); } @凌驾 受保护的void onStop(){ super.onStop(); 如果(GetChatsListener!=null){ getChatsList.removeEventListener(GetChatsListener); } },java,android,firebase,firebase-realtime-database,android-lifecycle,Java,Android,Firebase,Firebase Realtime Database,Android Lifecycle,未打开包含的活动时,将对我的firebase addvalueeventlistener执行操作。我打开应用程序的主页活动,其中有一个按钮链接到被质疑的活动。如果firebase发生更改,则home活动将刷新。如果我已打开包含值event listener的活动,并且发生firebase更改,则该活动将关闭,应用程序将返回到主活动。我已经在onStart()中为数据库引用设置了事件侦听器,并且正在onStop()中删除它。我能做什么?使用addChildEventListener,其中的函数应该

未打开包含的活动时,将对我的firebase addvalueeventlistener执行操作。我打开应用程序的主页活动,其中有一个按钮链接到被质疑的活动。如果firebase发生更改,则home活动将刷新。如果我已打开包含值event listener的活动,并且发生firebase更改,则该活动将关闭,应用程序将返回到主活动。我已经在onStart()中为数据库引用设置了事件侦听器,并且正在onStop()中删除它。我能做什么?

使用
addChildEventListener
,其中的函数应该是什么(onChildeded或)它不再工作。使用子侦听器对这个问题没有影响。乍一看,代码看起来是正确的,不过您可能需要检查是否实际调用了您的
桌面
。如果没有,请考虑在<代码> OnpPosie中删除侦听器。我可以想到的问题可能是由这行引起的。代码> FiBaseDATABASE。GETSimSee()。GETRebug(“用户”)。子(Muth.GeCurrutUsServer)…它认为你应该创建一个根ref或ref到
用户
节点,然后像下面的userRef.child(uid.child)(“chat”)那样向该节点添加子节点。
private FirebaseAuth mAuth;

private Query getChatsList;
private ValueEventListener getChatsListEventListener;
private AdapterChatsList adapterChatsList;
private List<String> providerUids;
private List<String> providerNames;
private RecyclerView chatsRecyclerView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_chats_list);

    mAuth = FirebaseAuth.getInstance();

    providerUids = new ArrayList<>();
    providerNames = new ArrayList<>();

    chatsRecyclerView = findViewById(R.id.chatsRecyclerView);
    LinearLayoutManager layoutManager = new LinearLayoutManager(ChatsListActivity.this);
    layoutManager.setStackFromEnd(true);
    layoutManager.setReverseLayout(true);
    chatsRecyclerView.setLayoutManager(layoutManager);

    getChatsList = FirebaseDatabase.getInstance().getReference("Users").child(mAuth.getCurrentUser().getUid()).child("Chats").orderByChild("details/lastInteraction");
    getChatsListEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            providerUids.clear(); providerNames.clear();
            for(DataSnapshot ds : dataSnapshot.getChildren()) {
                String providerUid = ds.getKey();
                String providerName = ds.child("details").child("oppositeName").getValue(String.class);


                providerUids.add(providerUid);
                providerNames.add(providerName);

                adapterChatsList = new AdapterChatsList(ChatsListActivity.this, providerUids, providerNames);
                adapterChatsList.notifyDataSetChanged();
                chatsRecyclerView.setAdapter(adapterChatsList);
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    };

}

@Override
protected void onStart() {
    super.onStart();
    getChatsList.addValueEventListener(getChatsListEventListener);
}

@Override
protected void onStop() {
    super.onStop();
    if(getChatsListEventListener != null) {
        getChatsList.removeEventListener(getChatsListEventListener);
    }
}