You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android报错:Method addObserver必须在主线程调用,求排查方案

问题排查:Fragment初始化时主线程异常导致addObserver报错

错误日志

近期应用版本出现大量如下错误:

java.lang.IllegalStateException: Method addObserver must be called on the main thread androidx.lifecycle.LifecycleRegistry.enforceMainThreadIfNeeded(LifecycleRegistry.java:317) androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.java:172) androidx.fragment.app.Fragment.initLifecycle(Fragment.java:550) androidx.fragment.app.Fragment.<init>(Fragment.java:516) androidx.fragment.app.DialogFragment.<init>(DialogFragment.java:181) com.example.testing.biometric.BiometricDialogFragment.<init>(BiometricDialogFragment.kt:13) com.example.testing.biometric.BiometricDialogFragment$Companion.show(BiometricDialogFragment.kt:17)

问题场景

我无法在自己的Android 13设备上复现该问题,也不确定是否会导致应用崩溃。问题触发逻辑是:在另一个Fragment中调用生物验证接口,当验证失败回调返回BiometricFailure.FailOther时,会调用BiometricDialogFragment.show()方法展示弹窗。

相关代码片段

BiometricDialogFragment的伴生对象方法

companion object {
        fun show(fragmentManager: FragmentManager) {
             BiometricDialogFragment().show(fragmentManager, TAG)
        }
}

调用处代码

private fun biometricLogin() {
    helper.getBiometricInfo(this, object : BiometricValidationCallback {
        override fun onSuccess(account: Account) {
            //handle success
        }

        override fun onFail(fail: BiometricFailure) {
            when (fail) {
                BiometricFailure.FailOther -> BiometricDialogFragment.show(childFragmentManager)
                else -> {}
            }
        }
    })
}

当前使用的AndroidX依赖版本

implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
implementation "androidx.lifecycle:lifecycle-common-java8:2.2.0"
implementation "android.arch.lifecycle:common-java8:1.1.1"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0"
implementation "androidx.lifecycle:lifecycle-reactivestreams:2.2.0"
implementation "androidx.activity:activity:1.5.0"
implementation "androidx.fragment:fragment-ktx:1.3.0-alpha06"
implementation "androidx.activity:activity-ktx:1.5.0"

implementation "androidx.biometric:biometric:1.0.1"

求助点

我查阅了多篇相关帖子但未找到可行方案,我们并未手动设置观察者却出现该错误,自身Android 13设备无法复现但其他Android 13用户会触发,请求帮忙排查问题根因。

内容的提问来源于stack exchange,提问作者KsiAndroid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 05:33:14