android - 如何独立运行两个 FirebaseVisionFaceDetector?
问题描述
我有两个 FirebaseVisionFaceDetector 实例,它们来自不同的 FirebaseApp。
在 App 类中初始化 FirebaseApps:
FirebaseApp.initializeApp(this, FirebaseOptions.fromResource(this)!!, "accurate")
FirebaseApp.initializeApp(this, FirebaseOptions.fromResource(this)!!, "fast")
获取探测器:
private val detector = FirebaseVision.getInstance(FirebaseApp.getInstance("accurate"))
.getVisionFaceDetector(optOpts)
private val detector2 = FirebaseVision.getInstance(FirebaseApp.getInstance("fast"))
.getVisionFaceDetector(optOpts2)
但是,当我在不同的线程中调用Tasks.await(detector.detectInImage(image))和Tasks.await(detector2.detectInImage(image))时,其中一个调用会阻塞另一个调用,因此它们的执行始终如一。
我认为检测器在后台使用相同的对象,所以我不能异步调用这个方法。有谁知道如何解决这个问题?
解决方案
我已经联系了支持团队,他们告诉我,目前所有 firebase 应用程序实例都使用同一个线程,因此无法并行。
此外,他们告诉我他们已经创建了一个功能请求,因此它将在 MLKit 的未来版本中得到修复。
推荐阅读
- node.js - 我们是否疯狂地将 node.js 用于具有大量内存状态的长时间运行的高性能服务器进程?
- python-2.7 - _tkinter.TclError: Can't find a usable init.tcl in the following directory - 这可能意味着 Tcl 没有正确安装
- angular - 调用 Http.post 不会触发 Angular 6 中的帖子
- javascript - process.env.UV_THREADPOOL_SIZE 不工作?
- reactjs - 无法使用 laravel 控制器保存反应原生 stringfy 数据
- java - StackOverflowError:执行获取请求时为空
- windows - 为什么不能在本机反应中创建新应用程序
- c++ - 如何导入使用自制软件安装的 GMP?
- ios - 三个实体分层,但在第三个中第一个不被考虑
- php - 如何使用 CURL_SETOPT 通过另一个 IP 地址路由 CURL?