- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 Android 中将 CompletableFutures
与 Firestore 结合使用。我已经利用 CompletableFutures
设置了一个函数,如下所示:
CompletableFuture<List<Park>> loadAllParks(){
final CompletableFuture<List<Park>> future = new CompletableFuture<>();
db.collection("parks")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
List<Park> results = new ArrayList<>();
for (QueryDocumentSnapshot document : Objects.requireNonNull(task.getResult())) {
Log.d("SUCCESS", document.getId() + " => " + document.getData());
Park documentObj = document.toObject(Park.class);
results.add(documentObj);
}
future.complete(results);
} else {
Log.d("ERROR", "Error getting documents: ", task.getException());
future.completeExceptionally(new CustomExceptions("Firebase Error"));
}
}
});
return future;
}
该函数的调用方式如下:
try {
allParks = loadAllParks().get();
for (Park park: allParks) {
Log.d("DEBUG", park.getName());
}
} catch (ExecutionException | InterruptedException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, "An error has occurred while retrieving the parks.",
Toast.LENGTH_SHORT).show();
}
但是,这会导致错误:
W/Firestore: (21.4.1) [OnlineStateTracker]: Could not reach Cloud Firestore backend. Backend didn't respond within 10 seconds
This typically indicates that your device does not have a healthy Internet connection at the moment. The client will > operate in offline mode until it is able to successfully connect to the backend.
因此,我在没有 CompletableFuture
函数的情况下按以下方式进行了尝试,并且能够使用以下代码获得所需的输出:
FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collection("parks")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
List<Park> results = new ArrayList<>();
for (QueryDocumentSnapshot document : Objects.requireNonNull(task.getResult())) {
Log.d("SUCCESS", document.getId() + " => " + document.getData());
Park documentObj = document.toObject(Park.class);
results.add(documentObj);
}
for (Park park: results) {
Log.d("DEBUG", park.getName());
}
} else {
Log.d("ERROR", "Error getting documents: ", task.getException());
}
}
});
因此,对我来说很明显,由于某种原因,CompletableFuture
未完成,并且它以某种方式导致 Firestore 调用无法通过(并且因此无法连接到 Firestore)。如果有任何关于为什么会出现这种情况的建议,我将不胜感激!
最佳答案
由于某种原因,我改用了.getNow()
而不是.get()
,结果成功获取。不知道为什么,因为来自 docs似乎唯一的区别是使用 .getNow()
您可以提供默认结果。欢迎任何解释!
关于java - Android ComputableFuture 无法与 Firestore 配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60563342/
自定义限流注解 先介绍一下 @Retention 和 @Target 这两个元注解 @Retention: 指定注解的生命周期(源码、class文件、运行时),其参考值见类的定义:java.lang.
在 Ubuntu 13.10 中使用 PyCharm Community Edition 和 IdeaVim 时,键盘经常停止接受输入,我必须重新启动 IDE。当我单击不同的文本区域时,光标仍然会移动
我正在开发一个Java项目,我试图让useDelimiter删除除“=”和“,”之间的文本之外的所有内容。例如,在文件的第一行我想保留“ThermostatNight”。 文本文件如下所示: E
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
目录 1、加入 remember-me 2、原理分析 自动登录是我们在软件开发时一个非常常见的功能,例如我们登录 QQ 邮箱: 很多网站我们在登录的时
我是开发 Android 应用程序的菜鸟。我想问一下。我的 PreferenceActivity 如何希望在不返回 MainActivity 并再次转到 PreferenceActivity 的情况下
1. 前言 大家好,我是安果! 我们都知道 Python 可以用来开发桌面应用,一旦功能开发完成,最后打包的可执行文件体积大,并且使用 Python 开发桌面应用周期相对较长 假如想快速开
我正在为命令行应用程序编写一个非常简单的 GUI 工具。它只有 2 个按钮。 连接并退出。 在 applicationDidFinishLaunching 中,我运行以下命令 NSPipe *pipe
我也在 LibGDX forums 上发布了这个问题. 嘿那里!在我的论文中,我正在编写一个 DSL 来描述图片的外观。这些图片将由 libGDX 根据 DSL-Input 绘制。目前,jetbrai
准备 SpringBoot 工程 1.新建 SpringBoot 项目,默认的端口是 8080 ,新建 Controller 和 Mapping @RestControllerpublic cla
我有类似的问题 this one 以下是我使用的: CDH4.4(配置单元 0.10) protobuf-java-.2.4.1.jar elephant-bird-hive-4.6-SNAPSHOT
我想使用 angularjs 和 angular-ui(特别是 ui-select2 功能)实现对选择输入的读/写访问控制。 场景很简单:通过使用 ng-readonly 属性,我可以控制用户是否可以
我是一名优秀的程序员,十分优秀!