CameraX.unbindAll() 方法发生了什么?

What happened to CameraX.unbindAll() method?

我正在尝试遵循我在网上找到的代码示例 (Gabriel Tanner, Ray Wenderlich, Official Introduction),但我通常在第一行就受阻了:

    CameraX.unbindAll()

编译器抱怨 unbindAll() 是未解析的引用 (Kotlin)。来自 here 的示例代码是唯一没有使用它的参考。但所有其他示例代码都有它,包括 Google 自己的视频。

我什至在 Google 的文档中找不到任何对此方法的引用。发生了什么?过去几个月的变化是否已经让所有这些激动人心的介绍都过时了?

我正在评估 CameraX,看看是否值得我们公司花时间将我们的代码从 Camera2 切换到 CameraX。如果事情变化如此之快,未来发生重大代码更改的可能性有多大?

CameraX 自去年首次推出以来经历了一些变化,这很正常,因为它仍处于 Alpha 阶段,API 表面在整个 alpha 版本中发生了一些变化,但由于它已经进入beta,它的 public API 变得更稳定了。

回到您的问题,CameraX 中的绑定和解除绑定用例不再通过 CameraX class 完成,而是现在使用 ProcessCameraProvider.bindToLifecycle() to bind one or multiple use cases to a lifecycle, ProcessCameraProvider.unbind() to unbind one or multiple use cases, and ProcessCameraProvider.unbindAll() 解除绑定所有绑定用例。

您用作参考的教程已过时,甚至去年 google I/O 的视频也已过时,因为其中的代码片段引用的是 CameraX 的第一个 alpha 版本。不过CameraX的the codelab you mentioned is -almost- up to date, it's the official CameraX codelab that's maintained by Google. You can also take a look at the official documentation的link,比你参考的教程更新的多