我想重用同一个FirebaseVisionTextDetector,这样我就不必多次创建同一对象的多个实例。我担心的是,如果我在很短的时间内在不同的图像位图上调用detetor.detectInImage(...),FirebaseVisionTextDetector的异步属性是否能够处理与此相关的任何错误?还是应该为每个位图使用不同的检测器?
我特别指的是这段代码,这是这里的Google ML Kit教程的一部分:
https://firebase.google.com/docs/ml-kit/android/recognize-text
FirebaseVisionTextDetector detector = FirebaseVision.getInstance().getVisionTextDetector();
Task<FirebaseVisionText> result =
detector.detectInImage(image)
.addOnSuccessListener(new OnSuccessListener<FirebaseVisionText>() {
@Override
public void onSuccess(FirebaseVisionText firebaseVisionText) {
// Task completed successfully
// ...
}
})
.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
// ...
}
});
作为一个旁注,有人可以为我推荐一种将onSuccess方法中的文本传递回调用方法的方法吗?我正在考虑使用可观察对象或回调方法。
答案 0 :(得分:0)
默认情况下,Google的Task API是异步的,并且onSuccess或onFailure是它们完成时的回调。
您可以通过调用等待任务完成(需要同步的地方)
Tasks.await(myTask)
您是否有理由将文本传递回调用方法?您是否可以不只是将其传递给新方法来执行您需要做的事情?