2

我想重用相同的 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 方法中的文本传递回调用方法的方法吗?我正在考虑使用 obervables 或回调方法。

4

1 回答 1

1

Google 的任务 API 默认是异步的,onSuccess 或 onFailure 是它们完成时的回调。

您可以通过调用等待任务完成(在需要同步的地方)

Tasks.await(myTask)

您是否有理由要将文本传递回调用方法?你不能把它传递给一个新方法来做你需要做的事情吗?

于 2018-07-18T22:58:06.560 回答