【问题标题】:Lifecycle OnLifecycleEvent is deprecated生命周期 OnLifecycleEven 已弃用
【发布时间】:2022-01-19 20:17:46
【问题描述】:
在将 lifecycle 库更新到 2.4.0 后,Android Studio 将所有生命周期事件标记为已弃用。
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
fun create() {
tts = TextToSpeech(context, this)
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
fun stopTTS() {
tts?.stop()
}
是否有任何等效的替代品,例如DefaultLifecycleObserver?
【问题讨论】:
标签:
java
android
kotlin
lifecycle
【解决方案1】:
它已被弃用,因为他们现在希望您使用 Java 8 并实现接口 DefaultLifecycleObserver。由于 Java 8 允许接口具有默认实现,因此它们定义了 DefaultLifecycleObserver 与所有方法的空实现,因此您只需覆盖您使用的那些。
使用 @OnLifecycleEvent 标记函数的旧方法是 Java 8 之前的项目的拐杖。这是允许类有选择地选择它关心的生命周期事件的唯一方法。另一种方法是强制这些类覆盖所有生命周期接口方法,即使将它们留空。
在您的情况下,更改您的类以实现 DefaultLifecycleObserver 并更改您的函数以覆盖 DefaultLifecycleObserver 的适用函数。如果您的项目尚未使用 Java 8,则需要更新 Gradle 构建文件。将这些放在模块的build.gradle 中的android 块中:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}