我的ViewModel类实现了LifecycleObserver
当我调用fragment.lifecycle.addObserver(this)时,它会产生异常。



奇怪的是,首先它运行良好,但不久前就出现了这种异常。我发现audioFocusRequest是导致此错误的原因。

private val audioFocusRequest by lazy {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN)
        .setOnAudioFocusChangeListener(this)
        .build() else throw RuntimeException("Can't be done for Android API lower than 26")
}

有谁知道如何解决?

UPD

尝试使用annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version",但出现编译错误:
android - LifecycleObserver使用使用较新API的方法产生异常-LMLPHP
(决定粘贴屏幕截图,因为整个日志都很大)

UPD 2
最后,我决定删除audioFocusRequest字段,并使用旧的不赞成使用的方法-requestAudioFocus(OnAudioFocusChangeListener l, int streamType, int durationHint)而不是推荐的requestAudioFocus(@NonNull AudioFocusRequest focusRequest)
它帮助我使代码再次正常工作,因此可以作为解决方案。但是我没有找到答案-为什么这个问题出现了。这很奇怪,因为代码以前曾经可以工作。

因此问题已经解决,但问题仍然没有答案

最佳答案

尝试使用kapt "androidx.lifecycle:lifecycle-compiler:2.0.0"

10-07 13:53