【发布时间】:2021-07-20 08:43:54
【问题描述】:
我在 Android 应用上使用 FireStore(不是 Firebase 实时数据库)。
当应用加载时,我正在向集合中添加一个监听器(参见下面的代码)
监听器工作得很好,只要应用程序处于活动状态,它就会正确更新。
但是,在应用程序进入后台后,在恢复应用程序时,侦听器有时会延迟大约 60-90 秒,直到它随着来自服务器的更改而更新。如果我关闭应用程序并重新启动它,它会立即更新。
当应用程序停止时,我分离监听器,并在 OnResume 上恢复它。我也尝试过不分离监听器,但我遇到了同样的问题。
有人知道怎么解决吗?见以下代码:
监听器(正在初始化 OnResume):
m_registration = db.collection('names').
orderBy("stamp", Query.Direction.ASCENDING)
.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot value,
@Nullable FirebaseFirestoreException e) {
if (e != null) {
Log.w(TAG, "Listen failed.", e);
return;
}
for (DocumentChange dc : value.getDocumentChanges()) {
}
在停止时,我正在分离监听器:
m_registration.remove();
【问题讨论】:
-
当应用程序处于后台时,您的应用程序是否会以某种方式失去互联网连接?
-
很难说,也许是几秒钟。使用手机时,显然无论走到哪里都没有接收信号。我猜你基本上是在问套接字是否断开连接?假设是,为什么重新连接 OnResume 需要这么多时间?与应用启动有关吗?
-
但在你的情况下,在更新之前的 60-90 秒之前,有没有可能断开连接?
-
您是否在 logcat 中收到
Failed to resolve name. status={1}这样的消息?你能查一下吗? -
您是在询问是否在 OnResume 之前立即断开连接?我不这么认为。我对它进行了很多测试,主要是在互联网良好的地方。
标签: java android firebase google-cloud-firestore