在多个生命周期方法中使用@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
}