Firebase ML Kit功能是否异步,以便我可以使用同一检测器运行多次检测?

时间:2018-07-18 21:17:29

标签: android firebase-mlkit

我想重用同一个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方法中的文本传递回调用方法的方法吗?我正在考虑使用可观察对象或回调方法。

1 个答案:

答案 0 :(得分:0)

默认情况下,Google的Task API是异步的,并且onSuccess或onFailure是它们完成时的回调。

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

Tasks.await(myTask)

您是否有理由将文本传递回调用方法?您是否可以不只是将其传递给新方法来执行您需要做的事情?