首页 > 解决方案 > HeaderScrollingViewBehavior 导致崩溃的原因是什么?

问题描述

在将应用程序投入生产后,我们会收到大量的崩溃报告。坠毁是由HeaderScrollingViewBehavior.

但是,我们对真正的根本原因一无所知,因为它没有指向我们的任何应用程序代码。

java.lang.IndexOutOfBoundsException:

java.lang.IndexOutOfBoundsException: 
  at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline (RecyclerView.java:6023)
  at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition (RecyclerView.java:5958)
  at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition (RecyclerView.java:5954)
  at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next (LinearLayoutManager.java:2226)
  at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk (LinearLayoutManager.java:1557)
  at androidx.recyclerview.widget.LinearLayoutManager.fill (LinearLayoutManager.java:1517)
  at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren (LinearLayoutManager.java:622)
  at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep1 (RecyclerView.java:3941)
  at androidx.recyclerview.widget.RecyclerView.dispatchLayout (RecyclerView.java:3705)
  at androidx.recyclerview.widget.RecyclerView.onLayout (RecyclerView.java:4260)
  at android.view.View.layout (View.java:20962)
  at android.view.ViewGroup.layout (ViewGroup.java:6276)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:325)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:261)
  at android.view.View.layout (View.java:20962)
  at android.view.ViewGroup.layout (ViewGroup.java:6276)
  at androidx.viewpager.widget.ViewPager.onLayout (ViewPager.java:1775)
  at android.view.View.layout (View.java:20962)
  at android.view.ViewGroup.layout (ViewGroup.java:6276)
  at android.widget.LinearLayout.setChildFrame (LinearLayout.java:1842)
  at android.widget.LinearLayout.layoutVertical (LinearLayout.java:1686)
  at android.widget.LinearLayout.onLayout (LinearLayout.java:1595)
  at android.view.View.layout (View.java:20962)
  at android.view.ViewGroup.layout (ViewGroup.java:6276)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:325)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:261)
  at android.view.View.layout (View.java:20962)
  at android.view.ViewGroup.layout (ViewGroup.java:6276)
  at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild (HeaderScrollingViewBehavior.java:148)
  at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild (ViewOffsetBehavior.java:41)
  at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onMeasureChild (AppBarLayout.java:1631)
  at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.setTopAndBottomOffset (AppBarLayout.java:1631)
  at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild (AppBarLayout.java:1631)
  at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout (CoordinatorLayout.java:898)
  at android.view.View.layout (View.java:20962)
  at android.view.ViewGroup.layout (ViewGroup.java:6276)
  at androidx.drawerlayout.widget.DrawerLayout.onLayout (DrawerLayout.java:1231)
  at android.view.View.layout (View.java:20962)
  at android.view.ViewGroup.layout (ViewGroup.java:6276)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:325)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:261)
  at android.view.View.layout (View.java:20962)
  at android.view.ViewGroup.layout (ViewGroup.java:6276)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:325)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:261)
  at android.view.View.layout (View.java:20962)
  at android.view.ViewGroup.layout (ViewGroup.java:6276)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:325)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:261)
  at android.view.View.layout (View.java:20962)
  at android.view.ViewGroup.layout (ViewGroup.java:6276)
  at android.widget.LinearLayout.setChildFrame (LinearLayout.java:1842)
  at android.widget.LinearLayout.layoutVertical (LinearLayout.java:1686)
  at android.widget.LinearLayout.onLayout (LinearLayout.java:1595)
  at android.view.View.layout (View.java:20962)
  at android.view.ViewGroup.layout (ViewGroup.java:6276)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:325)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:261)
  at com.android.internal.policy.DecorView.onLayout (DecorView.java:880)
  at android.view.View.layout (View.java:20962)
  at android.view.ViewGroup.layout (ViewGroup.java:6276)
  at android.view.ViewRootImpl.performLayout (ViewRootImpl.java:3024)
  at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2532)
  at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1624)
  at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:7926)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1079)
  at android.view.Choreographer.doCallbacks (Choreographer.java:885)
  at android.view.Choreographer.doFrame (Choreographer.java:809)
  at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:1065)
  at android.os.Handler.handleCallback (Handler.java:891)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:207)
  at android.app.ActivityThread.main (ActivityThread.java:7470)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:524)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:958)

异常.class.missing。未知:查看支架 2

exception.class.missing._Unknown_: View Holder 2
  at androidx.recyclerview.widget.RecyclerView.handleMissingPreInfoForChangeError (RecyclerView.java:4124)
  at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep3 (RecyclerView.java:4048)
  at androidx.recyclerview.widget.RecyclerView.dispatchLayout (RecyclerView.java:3718)
  at androidx.recyclerview.widget.RecyclerView.onLayout (RecyclerView.java:4260)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:323)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:261)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at androidx.viewpager.widget.ViewPager.onLayout (ViewPager.java:1775)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at android.widget.LinearLayout.setChildFrame (LinearLayout.java:1741)
  at android.widget.LinearLayout.layoutVertical (LinearLayout.java:1585)
  at android.widget.LinearLayout.onLayout (LinearLayout.java:1494)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:323)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:261)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild (HeaderScrollingViewBehavior.java:148)
  at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild (ViewOffsetBehavior.java:41)
  at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onMeasureChild (AppBarLayout.java:1631)
  at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.setTopAndBottomOffset (AppBarLayout.java:1631)
  at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild (AppBarLayout.java:1631)
  at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout (CoordinatorLayout.java:898)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at androidx.drawerlayout.widget.DrawerLayout.onLayout (DrawerLayout.java:1231)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:323)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:261)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:323)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:261)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:323)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:261)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at android.widget.LinearLayout.setChildFrame (LinearLayout.java:1741)
  at android.widget.LinearLayout.layoutVertical (LinearLayout.java:1585)
  at android.widget.LinearLayout.onLayout (LinearLayout.java:1494)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:323)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:261)
  at com.android.internal.policy.DecorView.onLayout (DecorView.java:888)
  at android.view.View.layout (View.java:18804)
  at android.view.ViewGroup.layout (ViewGroup.java:5951)
  at android.view.ViewRootImpl.performLayout (ViewRootImpl.java:2659)
  at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2375)
  at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1526)
  at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:7102)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:927)
  at android.view.Choreographer.doCallbacks (Choreographer.java:702)
  at android.view.Choreographer.doFrame (Choreographer.java:638)
  at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:913)
  at android.os.Handler.handleCallback (Handler.java:751)
  at android.os.Handler.dispatchMessage (Handler.java:95)
  at android.os.Looper.loop (Looper.java:154)
  at android.app.ActivityThread.main (ActivityThread.java:6682)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1534)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1424)

关于为什么会发生这种崩溃的任何想法?崩溃发生在 Android 8.1 到 Android 9 上。我们预计会出现更多崩溃。但是,我们几乎无法重现崩溃。

我们的应用程序使用 AndroidX 以 API 28 为目标。

标签: android

解决方案


推荐阅读