如何从 MainActivity 调用方法到 LifeCycleObserver
How to call method from MainActivity into LifeCycleObserver
我按照教程构建了一个计时器应用程序。本教程在 MainActivity 中创建了创建和销毁计时器的方法。现在,我正试图在用户离开应用程序时停止计时器。我正在使用 LifeCycleObserver 在 Lifecycle.Event.ON_STOP 发生并且应用程序进入后台时调用。
我想在用户离开应用程序时在 Main Activity 中调用一个名为 onTimerFinished() 的方法
当我尝试调用我的 LifeCycleObserver 中的方法时,它 returns 一个错误,它是一个未解析的引用。
这是我正在尝试 onTimerFinished 的 LifecycleObserver
class ApplicationObserver() : LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun onBackground() {
Log.d("myTag", "App closed")
MainActivity.onTimerFinished()
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onForeground() {
}
}
这是位于我的 MainActivity
中的函数 onTimerFinished
private fun onTimerFinished(){
timerState = TimerState.Stopped
setNewTimerLength()
progress_countdown.progress = 0
PrefUtil.setSecondsRemaining(timerLengthSeconds,this)
secondsRemaining = timerLengthSeconds
updateButtons()
updateCountdownUI()
}
当我将变量移动到 MainActivity 的伴随对象中时,它似乎并没有改变实际的计时器。相反,它会更改伴随对象的变量。
如何在我的 LifecycleObserver 中调用这个函数
不能直接调用MainActivity private fun。您需要它的参考并且必须制作 onTimeFinished 方法 public.
在 MainActivity
fun onTimerFinished(){
timerState = TimerState.Stopped
setNewTimerLength()
progress_countdown.progress = 0
PrefUtil.setSecondsRemaining(timerLengthSeconds,this)
secondsRemaining = timerLengthSeconds
updateButtons()
updateCountdownUI()
}
生命周期观察者
class ApplicationObserver(mainActivity: MainActivity) : LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun onBackground() {
Log.d("myTag", "App closed")
mainActivity.onTimerFinished()
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onForeground() {
}
}
您可以在 MainActivity 中创建 ApplicationObserver 对象时将其作为参数传递,例如
val applicationObserver = ApplicationObserver(this)
我按照教程构建了一个计时器应用程序。本教程在 MainActivity 中创建了创建和销毁计时器的方法。现在,我正试图在用户离开应用程序时停止计时器。我正在使用 LifeCycleObserver 在 Lifecycle.Event.ON_STOP 发生并且应用程序进入后台时调用。
我想在用户离开应用程序时在 Main Activity 中调用一个名为 onTimerFinished() 的方法
当我尝试调用我的 LifeCycleObserver 中的方法时,它 returns 一个错误,它是一个未解析的引用。
这是我正在尝试 onTimerFinished 的 LifecycleObserver
class ApplicationObserver() : LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun onBackground() {
Log.d("myTag", "App closed")
MainActivity.onTimerFinished()
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onForeground() {
}
}
这是位于我的 MainActivity
中的函数 onTimerFinishedprivate fun onTimerFinished(){
timerState = TimerState.Stopped
setNewTimerLength()
progress_countdown.progress = 0
PrefUtil.setSecondsRemaining(timerLengthSeconds,this)
secondsRemaining = timerLengthSeconds
updateButtons()
updateCountdownUI()
}
当我将变量移动到 MainActivity 的伴随对象中时,它似乎并没有改变实际的计时器。相反,它会更改伴随对象的变量。
如何在我的 LifecycleObserver 中调用这个函数
不能直接调用MainActivity private fun。您需要它的参考并且必须制作 onTimeFinished 方法 public.
在 MainActivity
fun onTimerFinished(){
timerState = TimerState.Stopped
setNewTimerLength()
progress_countdown.progress = 0
PrefUtil.setSecondsRemaining(timerLengthSeconds,this)
secondsRemaining = timerLengthSeconds
updateButtons()
updateCountdownUI()
}
生命周期观察者
class ApplicationObserver(mainActivity: MainActivity) : LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun onBackground() {
Log.d("myTag", "App closed")
mainActivity.onTimerFinished()
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onForeground() {
}
}
您可以在 MainActivity 中创建 ApplicationObserver 对象时将其作为参数传递,例如
val applicationObserver = ApplicationObserver(this)