在多个生命周期方法中使用@OnLifecycleEvent 注解的方法
Method with @OnLifecycleEvent annotation in multiple lifecycle methods
我的片段中有以下生命周期方法 class:
override fun onPause() {
super.onPause()
releasePlayer()
}
override fun onStop() {
super.onStop()
if(Util.SDK_INT >= 24){
releasePlayer()
}
}
如您所见,它们都调用了一个名为 releasePlayer()
的方法。
现在,我不想使用这两个生命周期方法,而是想将 Fragment
中的 releasePlayer()
逻辑放入一个单独的 class 中,该 class 实现了 LifecycleObserver
接口。因此,无论何时触发 onStart() 或 onResume() 生命周期方法,都会调用单独 class 中的 releasePlayer()
代码(观察生命周期方法)。
为此,我现在有这个:
class PlayerLogic(private val lifecycleOwner: LifecycleOwner) : LifecycleObserver {
init {
lifecycleOwner.lifecycle.addObserver(this)
}
@OnLifecycleEvent(Lifecycle.Event.ON_START,Lifecycle.Event.ON_RESUME)
private fun releasePlayer(){ // ..do some stuff }
}
但使用 @OnLifecycleEvent(Lifecycle.Event.ON_START,Lifecycle.Event.ON_RESUME)
给我一个错误,告诉我 @OnLifecycleEvent
注释只包含一个参数。
那么,当 onStart()
和 onResume()
被调用时,如何让 releasePlayer()
被调用。
那可能吗 ?如果是,如何?
只需复制它
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun start() {
releasePlayer()
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
fun resume() {
releasePlayer()
}
private fun releasePlayer() {
// ..do some stuff
}
我的片段中有以下生命周期方法 class:
override fun onPause() {
super.onPause()
releasePlayer()
}
override fun onStop() {
super.onStop()
if(Util.SDK_INT >= 24){
releasePlayer()
}
}
如您所见,它们都调用了一个名为 releasePlayer()
的方法。
现在,我不想使用这两个生命周期方法,而是想将 Fragment
中的 releasePlayer()
逻辑放入一个单独的 class 中,该 class 实现了 LifecycleObserver
接口。因此,无论何时触发 onStart() 或 onResume() 生命周期方法,都会调用单独 class 中的 releasePlayer()
代码(观察生命周期方法)。
为此,我现在有这个:
class PlayerLogic(private val lifecycleOwner: LifecycleOwner) : LifecycleObserver {
init {
lifecycleOwner.lifecycle.addObserver(this)
}
@OnLifecycleEvent(Lifecycle.Event.ON_START,Lifecycle.Event.ON_RESUME)
private fun releasePlayer(){ // ..do some stuff }
}
但使用 @OnLifecycleEvent(Lifecycle.Event.ON_START,Lifecycle.Event.ON_RESUME)
给我一个错误,告诉我 @OnLifecycleEvent
注释只包含一个参数。
那么,当 onStart()
和 onResume()
被调用时,如何让 releasePlayer()
被调用。
那可能吗 ?如果是,如何?
只需复制它
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun start() {
releasePlayer()
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
fun resume() {
releasePlayer()
}
private fun releasePlayer() {
// ..do some stuff
}