【发布时间】:2020-07-11 03:55:52
【问题描述】:
我的部分代码中有一个 Firebase 实时数据库侦听器,即:
DatabaseReference refState= FirebaseDatabase.getInstance().getReference("/Rooms/"+roomName+"/gameState");
refState.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String gameState = dataSnapshot.getValue(String.class);
if (gameState.equals("choose_letter")) {
System.out.println("Starting game");
startGame();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("Error");
}
});
startGame() 函数在哪里:
private void startGame(){
Intent i = new Intent(Salon.this, Game.class);
i.putExtra("username",username);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(i);
finish();
}
代码可以正常工作并执行我想要的操作:当 datdabased 中的“gameState”值更改为“choose_letter”时,它会从当前活动“Salon”启动一个名为“Game”的新活动并完成所有底层活动(包括沙龙)。在游戏过程中,“gameState”多次更改,但是当设置为:“choose_letter”时,活动重新打开,在控制台中我可以阅读“开始游戏”。 总而言之,不知何故,即使活动“沙龙”关闭,在该活动中声明的数据库侦听器仍在工作。 我想知道,这怎么可能,我该怎么做修复它?
【问题讨论】:
标签: android firebase-realtime-database android-activity listener