将应用程序推广到生产环境后,我们收到了大量崩溃报告。崩溃是由HeaderScrollingViewBehavior
引起的。
但是,我们对真正的根本原因一无所知,因为它没有指向我们的任何应用程序代码。
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)
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。