当我的数据库Firebase中的值(“状态”)更改时,我想开始新的活动。
但是我有问题,因为onActivityCreated被启动了三次(因为我的监听器的onDataChange被调用了几次)。我怎样才能解决这个问题 ?先感谢您。

//LISTEN IF THE GAME START ::
        mStart = FirebaseDatabase.getInstance().getReference().child("Rooms").child(roomId).child("Proprieties").child("Status");
        mStart.addValueEventListener(new ValueEventListener(){
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if (dataSnapshot.getValue().equals("GAME")){
                    Intent intent = new Intent(WaitGameActivity.this,GameActivity.class);
                    startActivity(intent);
                    finish();
                }
            }
            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) { }
        });


和日志:

V/FA: onActivityCreated
V/FA: onActivityCreated
V/FA: onActivityCreated

最佳答案

收到如下所示的事件后,您可以删除值侦听器:

 mStart.addValueEventListener(new ValueEventListener(){
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                mStart.removeValueEventListener(this); //remove once you get the event
                if (dataSnapshot.getValue().equals("GAME")){
                    Intent intent = new Intent(WaitGameActivity.this,GameActivity.class);
                    startActivity(intent);
                    finish();
                }
            }
            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) { }
        });

关于java - onActivityCreated启动了三次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61139314/

10-08 21:59