React Native:在本机模块中获取 Lifecycle 或 LifecycleOwner

mro*_*avy 3 android kotlin react-native androidx

我正在为 React Native 开发一个本机模块,它包装了 CameraX API。CameraX API 是一个生命周期感知 API,因此它要求我将 androidx Lifecycle(或 androidx LifecycleOwner)传递到它的构造函数中。

由于这些是 androidx 类,因此无法从 React Native 上下文中获取Lifecycle( 或) 。LifecycleOwner

然而ReactContext::addLifecycleEventListener,它是由 React Native ( ) 实现的自定义生命周期事件监听器LifecycleEventListener,我现在正在尝试将其“转换”/映射到 androidx Lifecycle(或LifecycleOwner),但我不知道如何实现。

val lifecycle: Lifecycle = ???

reactContext.addLifecycleEventListener(object : LifecycleEventListener {
    override fun onHostResume() {
        TODO("Not yet implemented")
    }

    override fun onHostPause() {
        TODO("Not yet implemented")
    }

    override fun onHostDestroy() {
        TODO("Not yet implemented")
    }
})

cameraProvider.bindToLifecycle(lifecycle, cameraSelector, preview)
Run Code Online (Sandbox Code Playgroud)

我现在的问题是:如何从我的 React 生命周期“创建”一个Lifecycle(或)实例?LifecycleOwner

我将不胜感激任何形式的帮助。

mro*_*avy 6

解决方案是从反应上下文中转换当前活动:

private val lifecycle: Lifecycle by lazy {
    ((context as ReactContext).currentActivity as AppCompatActivity).lifecycle
}
Run Code Online (Sandbox Code Playgroud)