gpt4 book ai didi

android - 离线时不调用 Firebase onDataChange

转载 作者:行者123 更新时间:2023-11-29 01:11:51 28 4
gpt4 key购买 nike

关于 Firebase ValueEventListener,我遇到了一个非常奇怪的情况。

当手机连接到互联网时,它工作正常。但是当它离线时,它不会调用 onDataChange。

这段代码即使在离线状态下也能正常工作。

mDatabase = FirebaseDatabase.getInstance()
.getReference()
.child(Database.PLACES)
.child(((BaseActivity) getActivity()).getUserId());

Timber.d("TRYING TO GET PLACES");
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Timber.d("GOT PLACES");
}

@Override
public void onCancelled(DatabaseError databaseError) {
Timber.w(databaseError.toException());
}
});

它给了我这个日志:

D/PlaceListFragment:207: TRYING TO GET PLACES
D/Persistence: Starting transaction.
D/Persistence: Saved new tracked query in 1ms
D/Persistence: Transaction completed. Elapsed: 3ms
D/EventRaiser: Raising 1 event(s)
D/EventRaiser: Raising /places/JLC2zqpSMFfYEGaUAfSTCHA2K4k1: VALUE: null
D/PlaceListFragment:211: GOT PLACES

但是,使用完全相同的代码,但更改了 DatabaseReference(路径),它给了我这个日志并且不起作用。

D/AnalysisActivity$2$override:144: TRYING TO GET READS
D/Persistence: Starting transaction.
D/Persistence: Saved new tracked query in 0ms
D/Persistence: Loaded a total of 0 rows for a total of 0 nodes at /reads/-KdiPFBrnEBHaPGCbP86 in 1ms (Query: 1ms, Loading: 0ms, Serializing: 0ms)
D/Persistence: Transaction completed. Elapsed: 13ms

是什么让我相信即使交易已完成,也有一些东西可以阻止调用此事件。

会发生什么?

Obs:我的用户已通过 firebase auth correclty 进行身份验证,我在我的应用程序设置中进行了此配置:

FirebaseDatabase.getInstance().setPersistenceEnabled(true);
FirebaseDatabase.getInstance().setLogLevel(Logger.Level.DEBUG);

最佳答案

您共享的代码中没有任何内容写入数据。这意味着 Firebase 正在从其缓存中返回数据。由于它以空快照触发,显然您尝试读取的位置从未被缓存。因此,它无法调用 onDataChange

onCancelled 方法将在您没有权限时触发。客户端根本不知道你是否有权限(因为它没有连接到服务器),所以它也不能调用 onCancelled

因此,在不知道该位置的值(如果有)或您是否有权限的情况下,所有方法都不会触发。重新连接到后端后,将触发正确的事件。

如果您知道这是一个新位置,您可能希望通过向其写入null准备该位置。这样缓存将包含该位置的值,并且 onDataChange 将使用没有值的快照调用。

关于android - 离线时不调用 Firebase onDataChange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42430992/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com