After updating lifecycle library to 2.4.0 Android studio marked all Lifecycle events as deprecated.

@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
fun create() {
    tts = TextToSpeech(context, this)
}

@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
fun stopTTS() {
    tts?.stop()
}

是否有类似的替代品,例如DefaultLifecycleObserver

推荐答案

它已被弃用,因为他们现在希望您使用Java8并实现接口DefaultLifecycleWatch.由于Java8允许接口具有默认实现,因此它们使用所有方法的空实现定义了DefaultLifecycleWatch,因此您只需要覆盖您使用的方法.

The old way of marking functions with @OnLifecycleEvent was a crutch for pre-Java 8 projects. This was the only way to allow a class to selectively choose which lifecycle events it cared about. The alternative would have been to force those classes to override all the lifecycle interface methods, even if leaving them empty.

在您的示例中,将类更改为实现DefaultLifecycleWatch,并更改函数以覆盖DefaultLifecycleWatch的适用函数.如果您的项目尚未使用Java8,则需要更新Gradle构建文件.把这些放到你模块build.gradleandroid个挡路里:

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }

Kotlin相关问答推荐

如何在Kotlin中为两个数据类创建可重用的方法?

Gradle Jooq配置自定义生成器

解决Microronaut中多个可能的Bean候选者冲突

如何通过更改现有数据类型来执行Android房间数据库迁移?

Kotlin 编译器在构造函数中报告未使用的表达式,以便构建器采用 vararg lambda

使用 Compose for Desktop Bundle 文件

Kotlin 使用委托进行隐式覆盖

匹配在单词边界上包含特殊字符的变量字符串的正则表达式

如何从kotlin中的ArrayList中删除所有元素

如何在 Android 的 Fragment 中使用 setUserVisibleHint

如何为你的 Flutter 元素添加 Kotlin 支持?

Kotlin:内部类如何访问在外部类中声明为参数的变量?

Kotlin 代码是如何编译成原生代码的?

Kotlin - mutableMapOf() 会保留我输入的顺序

如何使用 Kotlin Coroutines 使 setOnClickListener debounce 1 秒?

防止导航到同一个片段

Kotlin中的下划线名称是为什么保留的?

将 androidx.constraintlayout:constraintlayout lib 更新到 2.0.2 版本后出现崩溃 isRtl () null 引用

Dagger 2 androidx fragment不兼容类型

如何在 spring-boot Web 客户端中发送请求正文?