如何使用 Hilt 创建生命周期感知组件?

Rah*_*hra 5 android dependency-injection dagger-hilt

比方说,我有一个 MediaRecorder 类,我将在另一个片段中使用它,如下所示:

class Recorder @Inject constructor(
    lifecycle: Lifecycle,
    private val mediaRecorder: MediaRecorder
) : LifecycleObserver {

    init {
        lifecycle.addObserver(this)
    }

    fun startRecording() {
        mediaRecorder.prepare()
        mediaRecorder.start()
    }

    fun stopRecording() {
        mediaRecorder.stop()
        mediaRecorder.release()
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    fun onPauseEvent() {
        mediaRecorder.pause()
    }
}
Run Code Online (Sandbox Code Playgroud)

我想在这里注入我将在这里使用的片段/活动的生命周期。

我怎样才能做到这一点?

Vla*_*lad 2

通过活动上下文进行尝试

class MyClass @Inject constructor(@ActivityContext context: Context) : LifecycleObserver {

    init {
        val activity = context as AppCompatActivity
        activity.lifecycle.addObserver(this)
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    private fun onStart() {

    }

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    private fun onStop() {

    }
}
Run Code Online (Sandbox Code Playgroud)

如果此类在片段之间共享,则添加@ActivityScoped注释