And*_*sky 5 android android-lifecycle kotlin fragment-lifecycle
我的ViewModel
课实施LifecycleObserver
。当我打电话fragment.lifecycle.addObserver(this)
时会产生异常。
原因:java.lang.IllegalArgumentException:该观察器类具有一些使用较新API的方法,而这些API在当前OS版本中不可用。生命周期甚至无法访问其他方法,因此您应确保观察者类仅访问最小API级别中可用的框架类,或使用lifecycle:compiler注释处理器。
奇怪的是,首先它运行良好,但不久前出现了这种异常。我发现,这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")
}
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决?
UPD
尝试使用annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
,但出现编译错误:
(决定粘贴屏幕截图,因为整个日志都很大)
UPD 2
最后,我决定删除audioFocusRequest
字段并使用旧的不赞成使用的方法- requestAudioFocus(OnAudioFocusChangeListener l, int streamType, int durationHint)
而不是推荐requestAudioFocus(@NonNull AudioFocusRequest focusRequest)
它帮助我使代码重新工作,因此可以解决。但是我没有找到答案-为什么这个问题出现了。这很奇怪,因为代码以前曾经可以工作。
因此问题已经解决,但问题仍然没有答案
归档时间: |
|
查看次数: |
316 次 |
最近记录: |