【发布时间】:2020-05-21 00:32:51
【问题描述】:
我的片段类中有以下生命周期方法:
override fun onPause() {
super.onPause()
releasePlayer()
}
override fun onStop() {
super.onStop()
if(Util.SDK_INT >= 24){
releasePlayer()
}
}
如您所见,它们都调用了一个名为releasePlayer() 的方法。
现在,我想使用这两种生命周期方法,而不是将 releasePlayer() 逻辑从 Fragment 放入一个实现 LifecycleObserver 接口的单独类中。因此,无论何时触发 onStart() 或 onResume() 生命周期方法,都会调用单独类中的 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() 被调用。
那可能吗 ?如果是,如何?
【问题讨论】: