Fixed
Status Update
Comments
gr...@google.com <gr...@google.com>
so...@google.com <so...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-master-dev
commit c60f33e229e31ab328ef6b59dab63b264954831c
Author: Alexandre Elias <aelias@google.com>
Date: Fri Jul 10 16:23:09 2020
Semantics no-op cleanups
Partly in response to lmr's broad code review, I did a pass of
superficial API/implementation cleanup. The main changes are:
- I changed each Boolean SemanticsProperty where false is equivalent to
not being present to take "Unit" instead. This is conceptually
clearer: it avoids questions like "can I cancel out a semantics from a
merged child by setting it to false?" Because "property = Unit" looks
weird, I also changed the style of these to "property()".
- I moved the Semantics id generator closer to where it's used, in
SemanticsModifierCore. I made it internal and an AtomicInt.
(Note that integer ids are heavily used in the Android
AccessibilityNodeInfo APIs so I can't simply remove them entirely.)
- I deleted dead code. Some examples include SemanticsHintOverrides,
a public API not connected to anything, and SemanticsPropertyKey
merge() open method which is never called. (In both cases I have
a different plan in mind for accessibility.)
Fixes: 145951226
Fixes: 145955412
Test: existing tests
Relnote: "Single-value semantics properties now use a calling style.
For example, 'semantics { hidden = true }' is now written as:
'semantics { hidden() }'."
Change-Id: Ic1afd12ea22c926babc9662f1804d80b33aa0cfc
M ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/LayoutNodeModifierBenchmark.kt
M ui/ui-core/api/0.1.0-dev15.txt
M ui/ui-core/api/current.txt
M ui/ui-core/api/public_plus_experimental_0.1.0-dev15.txt
M ui/ui-core/api/public_plus_experimental_current.txt
M ui/ui-core/api/restricted_0.1.0-dev15.txt
M ui/ui-core/api/restricted_current.txt
M ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/graphics/vector/VectorTest.kt
M ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/semantics/SemanticsTests.kt
M ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidActuals.kt
M ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidComposeView.kt
M ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidComposeViewAccessibilityDelegateCompat.kt
M ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidPopup.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/Expect.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsConfiguration.kt
D ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsHintOverrides.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsModifier.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsNode.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsOwner.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsWrapper.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/semantics/SemanticsProperties.kt
M ui/ui-foundation/api/0.1.0-dev15.txt
M ui/ui-foundation/api/current.txt
M ui/ui-foundation/api/public_plus_experimental_0.1.0-dev15.txt
M ui/ui-foundation/api/public_plus_experimental_current.txt
M ui/ui-foundation/api/restricted_0.1.0-dev15.txt
M ui/ui-foundation/api/restricted_current.txt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/Clickable.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/Dialog.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/Scroller.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/selection/Selectable.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/selection/Toggleable.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/semantics/FoundationSemanticsProperties.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/ButtonTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/CardTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/CheckboxScreenshotTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/RadioButtonScreenshotTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/ScaffoldTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/SnackbarTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/SurfaceTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/ripple/RippleIndicationTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/TextFieldScreenshotTest.kt
M ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt
M ui/ui-material/src/main/java/androidx/ui/material/TextFieldImpl.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/AssertsTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/CallSemanticsActionTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/ErrorMessagesTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/FindersTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/PrintToStringTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/ScrollToTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/TextActionsTest.kt
M ui/ui-test/src/main/java/androidx/ui/test/Actions.kt
M ui/ui-test/src/main/java/androidx/ui/test/Filters.kt
M ui/ui-text/api/0.1.0-dev15.txt
M ui/ui-text/api/current.txt
M ui/ui-text/api/public_plus_experimental_0.1.0-dev15.txt
M ui/ui-text/api/public_plus_experimental_current.txt
M ui/ui-text/api/restricted_0.1.0-dev15.txt
M ui/ui-text/api/restricted_current.txt
M ui/ui-text/src/commonMain/kotlin/androidx/ui/text/CoreTextField.kt
M ui/ui-text/src/commonMain/kotlin/androidx/ui/text/TextSemanticsProperties.kt
https://android-review.googlesource.com/1360099
Branch: androidx-master-dev
commit c60f33e229e31ab328ef6b59dab63b264954831c
Author: Alexandre Elias <aelias@google.com>
Date: Fri Jul 10 16:23:09 2020
Semantics no-op cleanups
Partly in response to lmr's broad code review, I did a pass of
superficial API/implementation cleanup. The main changes are:
- I changed each Boolean SemanticsProperty where false is equivalent to
not being present to take "Unit" instead. This is conceptually
clearer: it avoids questions like "can I cancel out a semantics from a
merged child by setting it to false?" Because "property = Unit" looks
weird, I also changed the style of these to "property()".
- I moved the Semantics id generator closer to where it's used, in
SemanticsModifierCore. I made it internal and an AtomicInt.
(Note that integer ids are heavily used in the Android
AccessibilityNodeInfo APIs so I can't simply remove them entirely.)
- I deleted dead code. Some examples include SemanticsHintOverrides,
a public API not connected to anything, and SemanticsPropertyKey
merge() open method which is never called. (In both cases I have
a different plan in mind for accessibility.)
Fixes: 145951226
Fixes: 145955412
Test: existing tests
Relnote: "Single-value semantics properties now use a calling style.
For example, 'semantics { hidden = true }' is now written as:
'semantics { hidden() }'."
Change-Id: Ic1afd12ea22c926babc9662f1804d80b33aa0cfc
M ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/LayoutNodeModifierBenchmark.kt
M ui/ui-core/api/0.1.0-dev15.txt
M ui/ui-core/api/current.txt
M ui/ui-core/api/public_plus_experimental_0.1.0-dev15.txt
M ui/ui-core/api/public_plus_experimental_current.txt
M ui/ui-core/api/restricted_0.1.0-dev15.txt
M ui/ui-core/api/restricted_current.txt
M ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/graphics/vector/VectorTest.kt
M ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/semantics/SemanticsTests.kt
M ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidActuals.kt
M ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidComposeView.kt
M ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidComposeViewAccessibilityDelegateCompat.kt
M ui/ui-core/src/androidMain/kotlin/androidx/ui/core/AndroidPopup.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/Expect.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsConfiguration.kt
D ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsHintOverrides.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsModifier.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsNode.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsOwner.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/core/semantics/SemanticsWrapper.kt
M ui/ui-core/src/commonMain/kotlin/androidx/ui/semantics/SemanticsProperties.kt
M ui/ui-foundation/api/0.1.0-dev15.txt
M ui/ui-foundation/api/current.txt
M ui/ui-foundation/api/public_plus_experimental_0.1.0-dev15.txt
M ui/ui-foundation/api/public_plus_experimental_current.txt
M ui/ui-foundation/api/restricted_0.1.0-dev15.txt
M ui/ui-foundation/api/restricted_current.txt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/Clickable.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/Dialog.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/Scroller.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/selection/Selectable.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/selection/Toggleable.kt
M ui/ui-foundation/src/main/java/androidx/ui/foundation/semantics/FoundationSemanticsProperties.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/ButtonTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/CardTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/CheckboxScreenshotTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/RadioButtonScreenshotTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/ScaffoldTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/SnackbarTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/SurfaceTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/ripple/RippleIndicationTest.kt
M ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/TextFieldScreenshotTest.kt
M ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt
M ui/ui-material/src/main/java/androidx/ui/material/TextFieldImpl.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/AssertsTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/CallSemanticsActionTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/ErrorMessagesTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/FindersTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/PrintToStringTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/ScrollToTest.kt
M ui/ui-test/src/androidTest/java/androidx/ui/test/TextActionsTest.kt
M ui/ui-test/src/main/java/androidx/ui/test/Actions.kt
M ui/ui-test/src/main/java/androidx/ui/test/Filters.kt
M ui/ui-text/api/0.1.0-dev15.txt
M ui/ui-text/api/current.txt
M ui/ui-text/api/public_plus_experimental_0.1.0-dev15.txt
M ui/ui-text/api/public_plus_experimental_current.txt
M ui/ui-text/api/restricted_0.1.0-dev15.txt
M ui/ui-text/api/restricted_current.txt
M ui/ui-text/src/commonMain/kotlin/androidx/ui/text/CoreTextField.kt
M ui/ui-text/src/commonMain/kotlin/androidx/ui/text/TextSemanticsProperties.kt
ap...@google.com <ap...@google.com> #4
Project: platform/frameworks/support
Branch: androidx-main
Author: Romain Guy <
Link:
Fix nodes fixup in ordered collections
Expand for full commit details
Fix nodes fixup in ordered collections
Adding numerous items creating key collisions could lead to a certain
traversal sequence in dropDeletes() that could in turn lead to the
corruption of the internal linked list. That corruption could later
cause the wrong eviction candidate to be used when trimming the size
of the cache, leading to a null pointer exception when retrieving
the eviction candidate key.
To create that situation, dropDeletes() would first need to swap two
items in the data structure, then re-process one of the items and
re-assign it to its current location. This would cause the loop to
erase the relocation mapping, creating the aforementioned corruption.
This case is now covered by two test cases: the existing test called
hashCollisions() (now renamed sequentialHashCollisions()), updated
with a larger iteration count to create the problem, and a new test
called randomizedHashCollisions() which does the same, but using non
sequential collision-provoking keys.
Fixes: 375607736
Relnote: Fixed a crash that could occur in SieveCache and OrderedScatterSet when adding numerous items causing repeated key collisions
Test: OrderedScatterSetTest, SieveCacheTest
Change-Id: Iaaf3d36d6adb491daf564d5625810446b6f5d321
Files:
- M
collection/collection/src/commonMain/kotlin/androidx/collection/OrderedScatterSet.kt
- M
collection/collection/src/commonMain/kotlin/androidx/collection/SieveCache.kt
- M
collection/collection/src/commonTest/kotlin/androidx/collection/OrderedScatterSetTest.kt
- M
collection/collection/src/commonTest/kotlin/androidx/collection/SieveCacheTest.kt
Hash: 12f25b86d1611d96214a3f54bd8bb736027498f5
Date: Wed Oct 30 15:47:02 2024
na...@google.com <na...@google.com> #5
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.collection:collection:1.5.0-alpha06
androidx.collection:collection-iosarm64:1.5.0-alpha06
androidx.collection:collection-iossimulatorarm64:1.5.0-alpha06
androidx.collection:collection-iosx64:1.5.0-alpha06
androidx.collection:collection-jvm:1.5.0-alpha06
androidx.collection:collection-linuxarm64:1.5.0-alpha06
androidx.collection:collection-linuxx64:1.5.0-alpha06
androidx.collection:collection-macosarm64:1.5.0-alpha06
androidx.collection:collection-macosx64:1.5.0-alpha06
androidx.collection:collection-mingwx64:1.5.0-alpha06
androidx.collection:collection-tvosarm64:1.5.0-alpha06
androidx.collection:collection-tvossimulatorarm64:1.5.0-alpha06
androidx.collection:collection-tvosx64:1.5.0-alpha06
androidx.collection:collection-watchosarm32:1.5.0-alpha06
androidx.collection:collection-watchosarm64:1.5.0-alpha06
androidx.collection:collection-watchosdevicearm64:1.5.0-alpha06
androidx.collection:collection-watchossimulatorarm64:1.5.0-alpha06
androidx.collection:collection-watchosx64:1.5.0-alpha06
th...@gmail.com <th...@gmail.com> #6
Thanks. We updated to this version, and we no longer see this crash in production.
Description
Jetpack Compose component(s) used: ui, ui-tooling, ui-viewbinding
Android Studio Build: Ladybug | 2024.2.1 Patch 1
Kotlin version: 2.0.20
Steps to Reproduce or Code Sample to Reproduce:
1. I don't have any. All I have is the crashlytics log. I hope the stacktrace would help.
2. The issues happens only in the 1.8.0 and was working perfectly in 1.7.4
Stack trace (if applicable):
Stacktace 1
```
Fatal Exception: java.lang.NullPointerException: null cannot be cast to non-null type K of androidx.collection.SieveCache
at androidx.collection.SieveCache.trimToSize(SieveCache.kt:528)
at androidx.collection.SieveCache.put(SieveCache.kt:284)
at androidx.compose.ui.text.font.TypefaceRequestCache.runCached(FontFamilyResolver.kt:220)
at androidx.compose.ui.text.font.FontFamilyResolverImpl.resolve(FontFamilyResolver.kt:94)
at androidx.compose.ui.text.font.FontFamilyResolverImpl.resolve-DPcqOEQ(FontFamilyResolver.kt:80)
at androidx.compose.ui.text.platform.AndroidParagraphIntrinsics$resolveTypeface$1.invoke-DPcqOEQ(AndroidParagraphIntrinsics.android.kt:97)
at androidx.compose.ui.text.platform.AndroidParagraphIntrinsics$resolveTypeface$1.invoke(AndroidParagraphIntrinsics.android.kt:94)
at androidx.compose.ui.text.platform.extensions.TextPaintExtensions_androidKt.applySpanStyle(TextPaintExtensions.android.kt:62)
at androidx.compose.ui.text.platform.AndroidParagraphIntrinsics.<init>(AndroidParagraphIntrinsics.android.kt:110)
at androidx.compose.ui.text.platform.AndroidParagraphIntrinsics_androidKt.ActualParagraphIntrinsics(AndroidParagraphIntrinsics.android.kt:184)
at androidx.compose.ui.text.ParagraphIntrinsicsKt.ParagraphIntrinsics(ParagraphIntrinsics.kt:95)
at androidx.compose.ui.text.ParagraphIntrinsicsKt.ParagraphIntrinsics$default(ParagraphIntrinsics.kt:87)
at androidx.compose.foundation.text.modifiers.ParagraphLayoutCache.setLayoutDirection(ParagraphLayoutCache.kt:278)
at androidx.compose.foundation.text.modifiers.ParagraphLayoutCache.layoutText-K40F9xA(ParagraphLayoutCache.kt)
at androidx.compose.foundation.text.modifiers.ParagraphLayoutCache.intrinsicHeight(ParagraphLayoutCache.kt:233)
at androidx.compose.foundation.text.modifiers.TextStringSimpleNode.maxIntrinsicHeight(TextStringSimpleNode.kt:402)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.maxIntrinsicHeight(LayoutModifierNodeCoordinator.kt:223)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.maxIntrinsicHeight(LayoutNodeLayoutDelegate.kt:918)
at androidx.compose.foundation.layout.IntrinsicMeasureBlocks.VerticalMaxHeight(RowColumnImpl.kt:408)
at androidx.compose.foundation.layout.ColumnMeasurePolicy.maxIntrinsicHeight(Column.kt:255)
at androidx.compose.ui.node.IntrinsicsPolicy.maxIntrinsicHeight(IntrinsicsPolicy.kt:53)
at androidx.compose.ui.node.LayoutNode.maxIntrinsicHeight(LayoutNode.kt:665)
at androidx.compose.ui.node.InnerNodeCoordinator.maxIntrinsicHeight(InnerNodeCoordinator.kt:139)
at androidx.compose.ui.node.NodeMeasuringIntrinsics$DefaultIntrinsicMeasurable.measure-BRTryo0(LayoutModifierNode.kt:349)
at androidx.compose.foundation.layout.WrapContentNode.measure-3p2s80s(Size.kt:1021)
at androidx.compose.ui.node.LayoutModifierNode$maxIntrinsicHeight$1.measure-3p2s80s(LayoutModifierNode.kt:99)
at androidx.compose.ui.node.NodeMeasuringIntrinsics.maxHeight$ui_release(LayoutModifierNode.kt:322)
at androidx.compose.ui.node.LayoutModifierNode.maxIntrinsicHeight(LayoutModifierNode.kt:98)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.maxIntrinsicHeight(LayoutModifierNodeCoordinator.kt:223)
at androidx.compose.ui.node.NodeMeasuringIntrinsics$DefaultIntrinsicMeasurable.measure-BRTryo0(LayoutModifierNode.kt:349)
at androidx.compose.foundation.layout.WrapContentNode.measure-3p2s80s(Size.kt:1021)
at androidx.compose.ui.node.LayoutModifierNode$maxIntrinsicHeight$1.measure-3p2s80s(LayoutModifierNode.kt:99)
at androidx.compose.ui.node.NodeMeasuringIntrinsics.maxHeight$ui_release(LayoutModifierNode.kt:322)
at androidx.compose.ui.node.LayoutModifierNode.maxIntrinsicHeight(LayoutModifierNode.kt:98)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.maxIntrinsicHeight(LayoutModifierNodeCoordinator.kt:223)
at androidx.compose.foundation.layout.SizeNode.maxIntrinsicHeight(Size.kt:909)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.maxIntrinsicHeight(LayoutModifierNodeCoordinator.kt:223)
at androidx.compose.ui.node.NodeMeasuringIntrinsics$DefaultIntrinsicMeasurable.measure-BRTryo0(LayoutModifierNode.kt:349)
at androidx.compose.foundation.layout.PaddingNode.measure-3p2s80s(Padding.kt:395)
at androidx.compose.ui.node.LayoutModifierNode$maxIntrinsicHeight$1.measure-3p2s80s(LayoutModifierNode.kt:99)
at androidx.compose.ui.node.NodeMeasuringIntrinsics.maxHeight$ui_release(LayoutModifierNode.kt:322)
at androidx.compose.ui.node.LayoutModifierNode.maxIntrinsicHeight(LayoutModifierNode.kt:98)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.maxIntrinsicHeight(LayoutModifierNodeCoordinator.kt:223)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.maxIntrinsicHeight(LayoutNodeLayoutDelegate.kt:918)
at androidx.compose.foundation.layout.IntrinsicMeasureBlocks.HorizontalMaxHeight(RowColumnImpl.kt:395)
at androidx.compose.foundation.layout.RowMeasurePolicy.maxIntrinsicHeight(Row.kt:267)
at androidx.compose.ui.node.IntrinsicsPolicy.maxIntrinsicHeight(IntrinsicsPolicy.kt:53)
at androidx.compose.ui.node.LayoutNode.maxIntrinsicHeight(LayoutNode.kt:665)
at androidx.compose.ui.node.InnerNodeCoordinator.maxIntrinsicHeight(InnerNodeCoordinator.kt:139)
at androidx.compose.ui.node.NodeMeasuringIntrinsics$DefaultIntrinsicMeasurable.measure-BRTryo0(LayoutModifierNode.kt:349)
at androidx.compose.foundation.layout.PaddingNode.measure-3p2s80s(Padding.kt:395)
at androidx.compose.ui.node.LayoutModifierNode$maxIntrinsicHeight$1.measure-3p2s80s(LayoutModifierNode.kt:99)
at androidx.compose.ui.node.NodeMeasuringIntrinsics.maxHeight$ui_release(LayoutModifierNode.kt:322)
at androidx.compose.ui.node.LayoutModifierNode.maxIntrinsicHeight(LayoutModifierNode.kt:98)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.maxIntrinsicHeight(LayoutModifierNodeCoordinator.kt:223)
at androidx.compose.foundation.ScrollNode.maxIntrinsicHeight(Scroll.kt:422)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.maxIntrinsicHeight(LayoutModifierNodeCoordinator.kt:223)
at androidx.compose.ui.node.NodeMeasuringIntrinsics$DefaultIntrinsicMeasurable.measure-BRTryo0(LayoutModifierNode.kt:349)
at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s(GraphicsLayerModifier.kt)
at androidx.compose.ui.node.LayoutModifierNode$maxIntrinsicHeight$1.measure-3p2s80s(LayoutModifierNode.kt:99)
at androidx.compose.ui.node.NodeMeasuringIntrinsics.maxHeight$ui_release(LayoutModifierNode.kt:322)
at androidx.compose.ui.node.LayoutModifierNode.maxIntrinsicHeight(LayoutModifierNode.kt:98)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.maxIntrinsicHeight(LayoutModifierNodeCoordinator.kt:223)
at androidx.compose.foundation.layout.IntrinsicHeightNode.calculateContentConstraints-l58MMJ0(Intrinsic.kt:245)
at androidx.compose.foundation.layout.IntrinsicSizeModifier.measure-3p2s80s(Intrinsic.kt)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:190)
at androidx.compose.foundation.layout.FillNode.measure-3p2s80s(Size.kt:717)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:190)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.kt:311)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.kt:310)
at androidx.compose.runtime.snapshots.Snapshot.enter(Snapshot.java:136)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:513)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:460)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:244)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:124)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:107)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:1784)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$getPerformMeasureConstraints$p(LayoutNodeLayoutDelegate.kt)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:690)
at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release(LayoutNode.kt:1144)
at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release$default(LayoutNode.kt:1137)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure-sdFAvZA(MeasureAndLayoutDelegate.kt:366)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:566)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded$default(MeasureAndLayoutDelegate.kt:532)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout(MeasureAndLayoutDelegate.kt:387)
at androidx.compose.ui.platform.AndroidComposeView.measureAndLayout(AndroidComposeView.android.kt:1323)
at androidx.compose.ui.node.Owner.measureAndLayout$default(Owner.kt:232)
at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(AndroidComposeView.android.kt:1647)
at android.view.View.draw(View.java:25180)
at android.view.View.updateDisplayListIfDirty(View.java:24036)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4764)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4736)
at android.view.View.updateDisplayListIfDirty(View.java:23982)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4764)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4736)
at android.view.View.updateDisplayListIfDirty(View.java:23982)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4764)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4736)
at android.view.View.updateDisplayListIfDirty(View.java:23982)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4764)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4736)
at android.view.View.updateDisplayListIfDirty(View.java:23982)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4764)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4736)
at android.view.View.updateDisplayListIfDirty(View.java:23982)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4764)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4736)
at android.view.View.updateDisplayListIfDirty(View.java:23982)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4764)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4736)
at android.view.View.updateDisplayListIfDirty(View.java:23982)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4764)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4736)
at android.view.View.updateDisplayListIfDirty(View.java:23982)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4764)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4736)
at android.view.View.updateDisplayListIfDirty(View.java:23982)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4764)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4736)
at android.view.View.updateDisplayListIfDirty(View.java:23982)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4764)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4736)
at android.view.View.updateDisplayListIfDirty(View.java:23982)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4764)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4736)
at android.view.View.updateDisplayListIfDirty(View.java:23982)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4764)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4736)
at android.view.View.updateDisplayListIfDirty(View.java:23982)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:768)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:774)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:872)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:6067)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:5722)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4811)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:3302)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:11362)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1689)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1698)
at android.view.Choreographer.doCallbacks(Choreographer.java:1153)
at android.view.Choreographer.doFrame(Choreographer.java:1079)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1646)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.app.ActivityThread.main(ActivityThread.java:8919)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
```
Stacktace 2:
```
Fatal Exception: java.lang.NullPointerException: null cannot be cast to non-null type K of androidx.collection.SieveCache
at androidx.collection.SieveCache.trimToSize(SieveCache.kt:528)
at androidx.collection.SieveCache.put(SieveCache.kt:284)
at androidx.compose.ui.text.font.TypefaceRequestCache.runCached(FontFamilyResolver.kt:220)
at androidx.compose.ui.text.font.FontFamilyResolverImpl.resolve(FontFamilyResolver.kt:94)
at androidx.compose.ui.text.font.FontFamilyResolverImpl.resolve-DPcqOEQ(FontFamilyResolver.kt:80)
at androidx.compose.ui.text.platform.AndroidParagraphIntrinsics$resolveTypeface$1.invoke-DPcqOEQ(AndroidParagraphIntrinsics.android.kt:97)
at androidx.compose.ui.text.platform.AndroidParagraphIntrinsics$resolveTypeface$1.invoke(AndroidParagraphIntrinsics.android.kt:94)
at androidx.compose.ui.text.platform.extensions.TextPaintExtensions_androidKt.applySpanStyle(TextPaintExtensions.android.kt:62)
at androidx.compose.ui.text.platform.AndroidParagraphIntrinsics.<init>(AndroidParagraphIntrinsics.android.kt:110)
at androidx.compose.ui.text.platform.AndroidParagraphIntrinsics_androidKt.ActualParagraphIntrinsics(AndroidParagraphIntrinsics.android.kt:184)
at androidx.compose.ui.text.ParagraphIntrinsicsKt.ParagraphIntrinsics(ParagraphIntrinsics.kt:95)
at androidx.compose.ui.text.MultiParagraphIntrinsics.<init>(MultiParagraphIntrinsics.kt:106)
at androidx.compose.foundation.text.modifiers.MultiParagraphLayoutCache.setLayoutDirection(MultiParagraphLayoutCache.kt:283)
at androidx.compose.foundation.text.modifiers.MultiParagraphLayoutCache.layoutText-K40F9xA(MultiParagraphLayoutCache.kt)
at androidx.compose.foundation.text.modifiers.MultiParagraphLayoutCache.layoutWithConstraints-K40F9xA(MultiParagraphLayoutCache.kt:164)
at androidx.compose.foundation.text.modifiers.TextAnnotatedStringNode.measure-3p2s80s(TextAnnotatedStringNode.kt:419)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:190)
at androidx.compose.foundation.layout.PaddingNode.measure-3p2s80s(Padding.kt:395)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:190)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.kt:311)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.kt:310)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:487)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:460)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:244)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:124)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:107)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:1784)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$getPerformMeasureConstraints$p(LayoutNodeLayoutDelegate.kt)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:690)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.measure-BRTryo0(LayoutNodeLayoutDelegate.kt:668)
at androidx.compose.foundation.layout.RowColumnMeasurePolicyKt.measure(RowColumnMeasurePolicy.kt:126)
at androidx.compose.foundation.layout.RowColumnMeasurePolicyKt.measure$default(RowColumnMeasurePolicy.kt:77)
at androidx.compose.foundation.layout.ColumnMeasurePolicy.measure-3p2s80s(Column.kt:207)
at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:127)
at androidx.compose.foundation.layout.SizeNode.measure-3p2s80s(Size.kt:861)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:190)
at androidx.compose.foundation.layout.SizeNode.measure-3p2s80s(Size.kt:861)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:190)
at androidx.compose.foundation.layout.PaddingNode.measure-3p2s80s(Padding.kt:395)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:190)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.kt:311)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke(LayoutNodeLayoutDelegate.kt:310)
at androidx.compose.runtime.snapshots.Snapshot.enter(Snapshot.java:136)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:513)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:460)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:244)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:124)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:107)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:1784)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$getPerformMeasureConstraints$p(LayoutNodeLayoutDelegate.kt)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:690)
at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release(LayoutNode.kt:1144)
at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release$default(LayoutNode.kt:1137)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure-sdFAvZA(MeasureAndLayoutDelegate.kt:366)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:566)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.onlyRemeasureIfScheduled(MeasureAndLayoutDelegate.kt:661)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.forceMeasureTheSubtreeInternal(MeasureAndLayoutDelegate.kt:688)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.forceMeasureTheSubtreeInternal(MeasureAndLayoutDelegate.kt:695)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.forceMeasureTheSubtreeInternal(MeasureAndLayoutDelegate.kt:695)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.forceMeasureTheSubtree(MeasureAndLayoutDelegate.kt:650)
at androidx.compose.ui.platform.AndroidComposeView.forceMeasureTheSubtree(AndroidComposeView.android.kt:1358)
at androidx.compose.ui.node.Owner.forceMeasureTheSubtree$default(Owner.kt:245)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:705)
at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release(LayoutNode.kt:1144)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure-sdFAvZA(MeasureAndLayoutDelegate.kt:364)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureOnly(MeasureAndLayoutDelegate.kt:623)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureOnly(MeasureAndLayoutDelegate.kt:419)
at androidx.compose.ui.platform.AndroidComposeView.onMeasure(AndroidComposeView.android.kt:1431)
at android.view.View.measure(View.java:28571)
at androidx.compose.ui.platform.AbstractComposeView.internalOnMeasure$ui_release(ComposeView.android.kt:298)
at androidx.compose.ui.platform.AbstractComposeView.onMeasure(ComposeView.android.kt:285)
at android.view.View.measure(View.java:28571)
at androidx.recyclerview.widget.RecyclerView$LayoutManager.measureChildWithMargins(RecyclerView.java:10210)
at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1688)
at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1622)
at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:687)
at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4645)
at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4348)
at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4919)
at android.view.View.layout(View.java:25771)
at android.view.ViewGroup.layout(ViewGroup.java:6822)
at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:149)
at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java)
at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java)
at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:918)
at android.view.View.layout(View.java:25771)
at android.view.ViewGroup.layout(ViewGroup.java:6822)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at android.view.View.layout(View.java:25771)
at android.view.ViewGroup.layout(ViewGroup.java:6822)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at android.view.View.layout(View.java:25771)
at android.view.ViewGroup.layout(ViewGroup.java:6822)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1891)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1729)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1638)
at android.view.View.layout(View.java:25771)
at android.view.ViewGroup.layout(ViewGroup.java:6822)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at android.view.View.layout(View.java:25771)
at android.view.ViewGroup.layout(ViewGroup.java:6822)
at androidx.coordinatorlayout.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1213)
at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:899)
at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:919)
at android.view.View.layout(View.java:25771)
at android.view.ViewGroup.layout(ViewGroup.java:6822)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at android.view.View.layout(View.java:25771)
at android.view.ViewGroup.layout(ViewGroup.java:6822)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1891)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1729)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1638)
at android.view.View.layout(View.java:25771)
at android.view.ViewGroup.layout(ViewGroup.java:6822)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at android.view.View.layout(View.java:25771)
at android.view.ViewGroup.layout(ViewGroup.java:6822)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1891)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1729)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1638)
at android.view.View.layout(View.java:25771)
at android.view.ViewGroup.layout(ViewGroup.java:6822)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at com.android.internal.policy.DecorView.onLayout(DecorView.java:1084)
at android.view.View.layout(View.java:25771)
at android.view.ViewGroup.layout(ViewGroup.java:6822)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:5279)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4526)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:3288)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:11344)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1689)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1698)
at android.view.Choreographer.doCallbacks(Choreographer.java:1153)
at android.view.Choreographer.doFrame(Choreographer.java:1079)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1646)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.app.ActivityThread.main(ActivityThread.java:8919)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
```