是否可以在不附加任何侦听器的情况下读取Firebase数据?

sha*_*ine 18 java android firebase

我正在使用Firebase Android应用,需要一种从Firebase读取数据的方法,而无需实际附加任何侦听器.如果数据在初始读取后发生变化,我不关心这个特定情况.有没有一种方法可以直接访问a DataSnapshot而不将EventListener附加到Firebase引用?或者是否有其他方法可以直接从Firebase引用中读取某种ref.getValue()等价物?

谢谢.

Fra*_*len 7

您可以使用Firebase的REST API来访问"原始"数据.

来自:https://www.firebase.com/docs/rest-api.html

您可以将任何Firebase URL用作REST端点.您需要做的就是将".json"附加到URL的末尾,并从您喜欢的HTTPS客户端发送请求.请注意,HTTPS是必需的.Firebase仅响应加密流量,以确保您的数据安全.

curl https://SampleChat.firebaseIO-demo.com/users/jack/name.json
Run Code Online (Sandbox Code Playgroud)

成功的请求将由200 OK HTTP状态代码指示.响应将包含要检索的数据:

{"first":"Jack", "last": "Sparrow"}
Run Code Online (Sandbox Code Playgroud)

同一页面还提到了一个Java包装器项目:https://github.com/bane73/firebase4j

  • 是的,我知道这件事.我只是希望我可以避免乱搞AsyncTasks并解析JSON,只是通过Firebase java客户端访问数据. (2认同)

Kat*_*ato 5

在Java SDK中提供了一个addListenerForSingleValueEvent方法,这相当于你ref.getValue().它被用作addValueEventListener,但只检索单个值.

fb.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snap) {
        System.out.println(snap.getName() + " -> " + snap.getValue());
    }

    @Override public void onCancelled() { }
});
Run Code Online (Sandbox Code Playgroud)

正如Frank所提到的,REST API也是一个很好的选择.