将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
等等效替代品?
7条答案
按热度按时间pu82cl6c1#
类必须按如下方式实现DefaultLifecycleObserver
然后实现所需的方法(Android Studio:ALT + i)
在您的Activity或片段中,将其添加到onCreate()
要更正确地实现它,请创建您自己的观察者类,将您想要观察的对象传递给它。
yiytaume2#
它已被弃用,因为他们现在希望您使用Java 8并实现接口DefaultLifecycleObserver。由于Java 8允许接口具有默认实现,因此他们使用所有方法的空实现来定义DefaultLifecycleObserver,这样您只需覆盖您使用的那些方法。
用
@OnLifecycleEvent
标记函数的旧方法是Java 8之前的项目的支柱,这是允许类选择性地选择它所关心的生命周期事件的唯一方法,替代方法是强制这些类覆盖所有的生命周期接口方法,即使将它们留空。在您的情况下,请更改类以实现DefaultLifecycleObserver,并更改函数以覆盖DefaultLifecycleObserver的适用函数。如果您的项目尚未使用Java 8,则需要更新Gradle构建文件。将这些文件放入模块
build.gradle
的android
块中:kb5ga3dv3#
为了跟踪当前
Activity
的生命周期,可以使用LifecycleEventObserver
类。首先,创建一个回调,使用
lifecycle.add( Observer )
方法在Activity
的onCreate
方法中附加回调,x6h2sr284#
您只需将不推荐使用的
@OnLifecycleEvent
替换为DefaultLifecycleObserver
,如以下示例所示:旧代码:
新代码:
dsekswqp5#
您可以创建此函数以使用
DefaultLifecycleObserver
,并在Activity
的onCreate
()生命周期回调中调用它igsr9ssn6#
注解需要使用代码生成或反射,这应该避免。
使用
DefaultLifecycleObserver
或LifecycleEventObserver
代替。使用LifecycleEventObserver
,我们可以直接添加观察者:xt0899hw7#
首先从
LifecycleEventObserver
继承类然后在
init
块或onCreate
中添加以下行:或者,如果您正在非活动/片段类中工作,则添加以下内容:
然后覆盖
onStateChanged
函数:此外,如果您已经在manifest中实现了
androidx-startup
,请将该代码更改为以下代码,否则LifecycleEventObserver
将不会调用: