![](/img/trans.png)
[英]How can lifecycle aware components using LifecycleObserver be aware of screen orientation changes
[英]How to create lifecycle aware components with Hilt?
比方说,我有一个 MediaRecorder class,我将在另一个看起来像这样的片段中使用它:
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()
}
}
我想在这里注入我将在这里使用的片段/活动的生命周期。
我怎样才能做到这一点?
通过活动上下文尝试
tailrec fun Context.activity(): Activity? = this as? Activity
?: (this as? ContextWrapper)?.baseContext?.activity()
class MyClass @Inject constructor(@ActivityContext context: Context) : LifecycleObserver {
init {
val activity = context.activity() as AppCompatActivity
activity.lifecycle.addObserver(this)
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
private fun onStart() {
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
private fun onStop() {
}
}
如果此 class 在片段之间共享,则添加@ActivityScoped
注释
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.