【问题标题】:Getting java.lang.NoSuchFieldException: ON_START for Android Arch Lifecycle获取 java.lang.NoSuchFieldException:Android Arch 生命周期的 ON_START
【发布时间】:2019-02-15 06:28:43
【问题描述】:

我有一个 SDK 库,它扩展了 Application.ActivityLifecycleCallbacks,LifecycleObserver。在构造函数中,我将类注册为 ProcessLifecycleOwner 的观察者。

ProcessLifecycleOwner.get().getLifecycle().addObserver(this);

对于 ON_START 起作用的方法,我为其添加了以下注释。

@OnLifecycleEvent(Lifecycle.Event.ON_START)

这在本地和测试环境中完全可以正常工作。即使对于发布版本,它也可以正常工作。但很少会出现以下错误:

Caused by java.lang.NoSuchFieldException: ON_START
   at java.lang.Class.getDeclaredField(Class.java:929)
   at libcore.reflect.AnnotationAccess.decodeValue(AnnotationAccess.java:685)
   at libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:663)
   at libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:641)
   at libcore.reflect.AnnotationAccess.getDeclaredAnnotation(AnnotationAccess.java:170)
   at java.lang.reflect.Method.getAnnotation(Method.java:301)
   at android.arch.lifecycle.ClassesInfoCache.createInfo(SourceFile:124)
   at android.arch.lifecycle.ClassesInfoCache.hasLifecycleMethods(SourceFile:59)
   at android.arch.lifecycle.Lifecycling.resolveObserverCallbackType(SourceFile:137)
   at android.arch.lifecycle.Lifecycling.getObserverConstructorType(SourceFile:119)
   at android.arch.lifecycle.Lifecycling.getCallback(SourceFile:57)
   at android.arch.lifecycle.LifecycleRegistry$ObserverWithState.<init>(SourceFile:347)
   at android.arch.lifecycle.LifecycleRegistry.addObserver(SourceFile:162)

此错误非常罕见。我只看到三星设备上的 Android 5.0、5.0.1 和 5.0.2 会发生这种情况。

我正在使用android.arch.lifecycle:extensions:1.1.1

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 您使用的是哪个版本的生命周期?添加带有问题的依赖项。
  • 我正在使用 1.1.1 进行拱形生命周期。

标签: java android android-lifecycle android-library application-lifecycle


【解决方案1】:

显然,在三星设备上存在一些反射失败的错误,但非常偶尔。

我在谷歌问题跟踪器上发布了这个并得到了以下答案:

https://issuetracker.google.com/issues/124584380

解决办法是迁移到Java 1.8 / Kotlin,使用内部不使用反射的DefaultLifecycleObserver

尚未尝试此解决方案。有没有效果都会发。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    相关资源
    最近更新 更多