我的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"
,但出现编译错误:(决定粘贴屏幕截图,因为整个日志都很大)
UPD 2
最后,我决定删除
audioFocusRequest
字段,并使用旧的不赞成使用的方法-requestAudioFocus(OnAudioFocusChangeListener l, int streamType, int durationHint)
而不是推荐的requestAudioFocus(@NonNull AudioFocusRequest focusRequest)
它帮助我使代码再次正常工作,因此可以作为解决方案。但是我没有找到答案-为什么这个问题出现了。这很奇怪,因为代码以前曾经可以工作。
因此问题已经解决,但问题仍然没有答案
最佳答案
尝试使用kapt "androidx.lifecycle:lifecycle-compiler:2.0.0"