我有一个应用程序,我必须将用户状态更新为在线或上次看到的时间。我通过将状态字段设置为“在线”并在onStart()
和onStop()
中分别为每个活动设置ServerValue.TIMESTAMP来执行此操作。但我面临的问题是,让我们有2个活动A和B,调用活动A的onStop()
,并将状态值更新为某个时间戳,然后调用活动B的onStart()
但是值未更新为“在线”。
我试图通过在同一个方法中一个接一个地运行相同的查询来测试它并且它工作但是当切换活动时它不起作用。
所以基本上这是有效的:(或查询的任意组合,两个或更多也是)
onStop(){
FirebaseDatabase.getInstance().getReference().child("users").child(uid).child("status").setValue("online");
FirebaseDatabase.getInstance().getReference().child("users").child(uid).child("status").setValue(ServerValue.TIMESTAMP);
}
但这不是:
//Activity A
onStop(){
FirebaseDatabase.getInstance().getReference().child("users").child(uid).child("status").setValue(ServerValue.TIMESTAMP);
}
//Activity B
onStart(){
FirebaseDatabase.getInstance().getReference().child("users").child(uid).child("status").setValue("online");
}
这只会更新时间戳,但不会“在线” 我做错了什么?
答案 0 :(得分:0)
Firebase客户端按照代码执行的顺序将命令发送到服务器。因此,似乎活动B的onStart
在活动A的onStop
之前执行。
您可以通过添加一些日志来验证这一点。