我正在为我的 android 应用程序使用 Firebase 后端。我想为我的聊天建立一个用户存在系统。为此,我采用了 Firebase Guide 中的模式
final Firebase myConnectionsRef = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/users/joe/connections");
// stores the timestamp of my last disconnect (the last time I was seen online)
final Firebase lastOnlineRef = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/users/joe/lastOnline");
final Firebase connectedRef = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/.info/connected");
connectedRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
boolean connected = snapshot.getValue(Boolean.class);
if (connected) {
// add this device to my connections list
// this value could contain info about the device or a timestamp too
Firebase con = myConnectionsRef.push();
con.setValue(Boolean.TRUE);
// when this device disconnects, remove it
con.onDisconnect().removeValue();
// when I disconnect, update the last time I was seen online
lastOnlineRef.onDisconnect().setValue(ServerValue.TIMESTAMP);
}
}
@Override
public void onCancelled(FirebaseError error) {
System.err.println("Listener was cancelled at .info/connected");
}
});
问题是我不知道什么时候会触发onDisconnect事件?!
每次我打开应用程序时,我都会将 TRUE 写入节点“ users/joe/connections ”,但是当我关闭应用程序时,什么都不会发生。当我关闭 WIFI 时,布尔参数也不会被删除。onDisconnect-event 仅在我强制停止我的应用程序或重新安装此应用程序或其他我无法确定时触发。
因此,据我了解,我必须手动处理此类事件:
1)关闭我的应用程序;
2)关闭WiFi;
3)也许是别的东西
在我的应用程序中创建 Presence 功能?但是什么时候触发onDisconnect-event呢?