我正在尝试在我的FirebaseDatabase
和我正在开发的Android应用中构建在线系统。目前,我正在尝试在我的数据库上实现onDisconenct()
方法。
private FirebaseAuth auth;
private FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference dbRef = database.getReference();
protected void onCreate(Bundle savedInstanceState){
dbRef.child("users").child("customers").child(auth.getCurrentUser().getUid()).onDisconnect().removeValue(new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError error, DatabaseReference firebase) {
if (error != null) {
System.out.println("could not establish onDisconnect event:" + error.getMessage());
}
}
});
}
firebase JSON树的结构如此
APP>
USERS>
CUSTOMERS>
UID-
我现在遇到的最大问题是onDisconnect().removeValue()
总是在创建Activity
时执行(即创建数据然后立即删除)。当应用仍然连接到数据库并进行身份验证时,会发生这种情况。
编辑:
实施此行代码
DatabaseReference connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected");
connectedRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
boolean connected = snapshot.getValue(Boolean.class);
if (connected) {
System.out.println("connected");
} else {
System.out.println("not connected");
dbRef.child("users").child("customers").child(auth.getCurrentUser().getUid()).removeValue();
}
}
似乎应用程序不断连接和断开数据库...
答案 0 :(得分:0)
猜猜我终于找到了问题的答案。如果将来有人面临这个问题...
FirebaseUser mUser = FirebaseAuth.getInstance().getCurrentUser();
mUser.getToken(true)
.addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
public void onComplete(@NonNull Task<GetTokenResult> task) {
if (task.isSuccessful()) {
idToken = task.getResult().getToken();
}
}
这一系列重复出现的代码导致我的客户端不断连接和断开连接。