当我的数据库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/