Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我想使用Firebase提供的服务器时间戳设置计算出的优先级_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 我想使用Firebase提供的服务器时间戳设置计算出的优先级

Android 我想使用Firebase提供的服务器时间戳设置计算出的优先级,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我想使用Firebase提供的服务器时间戳设置子级的优先级,ServerValue.TIMESTAMP: mFirebaseref.child(userid).setPriority(ServerValue.TIMESTAMP); mFirebaseref.child(userid).setPriority(ServerValue.TIMESTAMP); 但我的情况正好相反。我想设置负ServerValue.TIMESTAMP以根据时间将我的孩子移动到顶部。在Firebase中不使用本地时间

我想使用Firebase提供的服务器时间戳设置子级的优先级,
ServerValue.TIMESTAMP

mFirebaseref.child(userid).setPriority(ServerValue.TIMESTAMP);
mFirebaseref.child(userid).setPriority(ServerValue.TIMESTAMP);
但我的情况正好相反。我想设置负
ServerValue.TIMESTAMP
以根据时间将我的孩子移动到顶部。在Firebase中不使用本地时间戳
System.CurrentTimeInMillis()
,是否可以这样做

我想这样做:

mFirebaseref.child(userid).setPriority(-ServerValue.TIMESTAMP);

在客户端,
ServerValue.TIMESTAMP
是这样构造的对象:
{.sv:“TIMESTAMP”}

所以,正如你所知,你不能轻易地做你想做的事。但是,可能有不同的解决方案。例如,如果您想要五个最近的条目,您仍然可以通过
ServerValue.TIMESTAMP
设置优先级:

mFirebaseref.child(userid).setPriority(ServerValue.TIMESTAMP);
mFirebaseref.child(userid).setPriority(ServerValue.TIMESTAMP);
然后使用以下方法:

以获取最近的五个条目


此外,这可能会有所帮助:

您基本上是在询问如何获取负服务器时间戳,它应该脱机工作。我找到了一个方法,有一个隐藏的领域,你可以使用。文档中的一个片段:

Firebase offsetRef = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/.info/serverTimeOffset");
offsetRef.addValueEventListener(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot snapshot) {
    double offset = snapshot.getValue(Double.class);
    double estimatedServerTimeMs = System.currentTimeMillis() + offset;
  }

  @Override
  public void onCancelled(FirebaseError error) {
    System.err.println("Listener was cancelled");
  }
});
Firebase offsetRef=新的Firebase(“https://.firebaseio.com/.info/serverTimeOffset");
offsetRef.addValueEventListener(新的ValueEventListener(){
@凌驾
公共无效onDataChange(数据快照快照){
double offset=snapshot.getValue(double.class);
double estimatedServerTimeMs=系统.currentTimeMillis()+偏移量;
}
@凌驾
已取消公共作废(FirebaseError错误){
System.err.println(“侦听器被取消”);
}
});
链接到(遗留)文档,以防有人发现它有帮助: