java - onActivityCreated 启动了 3 次
问题描述
当我的 Database Firebase 中的值(“状态”)发生变化时,我想开始新的活动。但是我有问题,因为 onActivityCreated 启动了三次(因为我的 Listener 的 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) { }
});
推荐阅读
- angular - Angular 6 git diff 覆盖率
- android - 将 ML 模型转换/创建到 iOS 和 Android
- git - 在 Github repo 的子目录中安装 golang 库
- c# - C# 应用程序将文件从 GAC 复制到执行文件夹
- javascript - 当另一个事件更改我的输入值时的事件侦听器
- scala - Spark 无法读取 CSV 文件并转换为数据集
- python - 如何使用 python 在 Outlook(win app) 中回复邮件?
- c# - 从不同的 .xaml.cs 文件访问 .xaml 项目?
- angular - 使用外部库从模式框的输入中获取值
- android - 来自另一个 applicationId 风格的 Gradle 变量