gpt4 book ai didi

android - ViewTreeObserver 中的 IndexOutOfBoundsException

转载 作者:行者123 更新时间:2023-12-05 06:00:11 29 4
gpt4 key购买 nike

几个月以来,我在 Crashlytics 和 Google Play 控制台中遇到了 IndexOutOfBoundsException。我无法弄清楚它到底发生在哪里,因为堆栈跟踪仅列出了框架代码(请参阅下面的堆栈跟踪)。

根据 firebase 事件,我猜它会在显示广告时发生(它总是在关卡结束时发生,这就是我显示广告的地方)。

我使用 AdMob 作为中介网络,包括 AdMob、Unity 和 Facebook 广告。我有很多这样的崩溃,它发生在运行各种 Android 版本的几种设备类型上。由于它已经发生了很长时间,我怀疑它与 API 版本有任何关系,因为自第一次出现以来我已经更新了几次。

有没有人遇到同样的问题并且能够解决?

这是堆栈跟踪:

java.util.ArrayList.get (ArrayList.java:437)
android.view.ViewTreeObserver$CopyOnWriteArray$Access.get (ViewTreeObserver.java:1267)
android.view.ViewTreeObserver.dispatchOnGlobalLayout (ViewTreeObserver.java:1056)
android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2823)
android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1857)
android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:8089)
android.view.Choreographer$CallbackRecord.run (Choreographer.java:1057)
android.view.Choreographer.doCallbacks (Choreographer.java:875)
android.view.Choreographer.doFrame (Choreographer.java:776)
android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:1042)
android.os.Handler.handleCallback (Handler.java:888)
android.os.Handler.dispatchMessage (Handler.java:100)
android.os.Looper.loop (Looper.java:213)
android.app.ActivityThread.main (ActivityThread.java:8178)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:513)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1101)

这些是我的应用包含的 API:

implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.core:core:1.5.0'
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.3.1'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'com.google.android.material:material:1.3.0'
implementation 'com.android.billingclient:billing:4.0.0'
implementation 'com.google.android.gms:play-services-base:17.6.0'
implementation 'com.google.android.gms:play-services-basement:17.6.0'
implementation 'com.google.android.gms:play-services-games:21.0.0'
implementation 'com.google.android.gms:play-services-auth:19.0.0'
implementation 'androidx.room:room-runtime:2.3.0'
implementation 'androidx.lifecycle:lifecycle-process:2.3.1'
implementation 'com.google.code.gson:gson:2.8.6'
// Monetarization
implementation 'com.google.android.gms:play-services-ads:20.1.0'
implementation 'com.google.android.gms:play-services-ads-identifier:17.0.1'
// Ad mediation
implementation 'com.google.android.ads.consent:consent-library:1.0.8'
implementation 'com.google.ads.mediation:unity:3.6.0.0'
implementation 'com.google.ads.mediation:facebook:6.4.0.0'
// Firebase
implementation 'com.google.firebase:firebase-analytics:19.0.0'
implementation 'com.google.firebase:firebase-ads:20.1.0'
implementation 'com.google.firebase:firebase-core:19.0.0'
implementation 'com.google.firebase:firebase-auth:21.0.1'
implementation 'com.google.firebase:firebase-appindexing:20.0.0'
implementation 'com.google.firebase:firebase-crashlytics:18.0.0'
implementation 'com.google.firebase:firebase-config:21.0.0'
// Dagger
implementation 'com.google.dagger:dagger-android:2.35.1'
implementation 'com.google.dagger:dagger-android-support:2.33'

最佳答案

经过几天的调查并向 Crashlytics 添加了大量调试日志,我终于找到了崩溃的原因。

就我而言,这是由 Google Play 游戏引起的。我调用:

Games.getGamesClient(context, account).setViewForPopups(gameContentView);

紧随其后的是“正在加载”Dialog 的显示,它在屏幕上停留了大约 2 秒。

在极少数情况下,我猜测由 Games 库(异步)执行的 onGlobalLayoutListener 添加或删除与 Dialog 管理触发的类似操作同时发生 由 Android 开发,最终导致崩溃。

修复:我将对 setViewForPopups() 的调用移到了另一个极不可能发生并发 UI 更改的地方。

关于android - ViewTreeObserver 中的 IndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67821711/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com