Fixed
Status Update
Comments
cl...@google.com <cl...@google.com>
ap...@google.com <ap...@google.com> #2
Thanks for filing the issue.
This is a particularly hard device to come by - do you happen to have access to the device? If so could you provide us with the output of: adb shell dumpsys media.camera > info.txt
Thanks!
This is a particularly hard device to come by - do you happen to have access to the device? If so could you provide us with the output of: adb shell dumpsys media.camera > info.txt
Thanks!
Description
Version of Gradle Plugin: 4.2.0-alpha01
Version of Gradle: 6.5-rc-1
Version of Java: 8
OS: Windows 10
Steps to Reproduce:
@Composable
fun content() {
VerticalScroller {
for (i in 0..10){
embeddedHorizontalScroll()
}
}
}
@Composable
fun embeddedHorizontalScroll() {
HorizontalScroller {
for(i in 0..10){
Text(text = i.toString())
}
}
}
Crashes with log:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.blackcube.moviessearcher, PID: 1096
java.lang.IllegalArgumentException: Key 1288834201 was already registered. Please call unregister before registering again
at androidx.ui.savedinstancestate.UiSavedStateRegistryImpl.registerProvider(UiSavedStateRegistry.kt:97)
at androidx.ui.savedinstancestate.ValueProvider.updateAndReturnValue(RememberSavedInstanceState.kt:101)
at androidx.ui.savedinstancestate.RememberSavedInstanceStateKt.rememberSavedInstanceState(RememberSavedInstanceState.kt:66)
at androidx.ui.foundation.ScrollerKt.ScrollerPosition(Scroller.kt:69)
at androidx.ui.foundation.ScrollerKt.HorizontalScroller(Scroller.kt:260)
at com.blackcube.moviessearcher.ui.GenresScreenKt.embeddedHorizontalScroll(GenresScreen.kt:56)
at com.blackcube.moviessearcher.ui.GenresScreenKt$content$1.invoke(GenresScreen.kt:49)
at com.blackcube.moviessearcher.ui.GenresScreenKt$content$1.invoke(Unknown Source:16)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:148)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.ui.layout.ColumnKt$Column$1.invoke(Column.kt:74)
at androidx.ui.layout.ColumnKt$Column$1.invoke(Unknown Source:14)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:139)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.ui.core.LayoutKt.Layout(Layout.kt:167)
at androidx.ui.core.LayoutKt.Layout(Layout.kt:122)
at androidx.ui.layout.RowColumnImplKt.RowColumnImpl(RowColumnImpl.kt:66)
at androidx.ui.layout.ColumnKt.Column(Column.kt:68)
at androidx.ui.foundation.ScrollerKt$VerticalScroller$1.invoke(Scroller.kt:231)
at androidx.ui.foundation.ScrollerKt$VerticalScroller$1.invoke(Unknown Source:14)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:139)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.ui.core.LayoutKt.Layout(Layout.kt:167)
at androidx.ui.core.LayoutKt.Layout(Layout.kt:157)
at androidx.ui.foundation.ScrollerKt.ScrollerLayout(Scroller.kt:316)
at androidx.ui.foundation.ScrollerKt.access$ScrollerLayout(Unknown Source:0)
at androidx.ui.foundation.ScrollerKt$Scroller$2.invoke(Scroller.kt:296)
at androidx.ui.foundation.ScrollerKt$Scroller$2.invoke(Unknown Source:14)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:139)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.ui.core.LayoutKt.PassThroughLayout(Layout.kt:214)
at androidx.ui.semantics.SemanticsKt.Semantics(Semantics.kt:46)
at androidx.ui.foundation.ScrollerKt.Scroller(Scroller.kt:283)
at androidx.ui.foundation.ScrollerKt.VerticalScroller(Scroller.kt:230)
at com.blackcube.moviessearcher.ui.GenresScreenKt.content(GenresScreen.kt:47)
at com.blackcube.moviessearcher.ui.GenresScreenKt.GenresScreen(GenresScreen.kt:41)
at com.blackcube.moviessearcher.ui.UiMoviesAppKt$appContent$1$1.invoke(UiMoviesApp.kt:21)
at com.blackcube.moviessearcher.ui.UiMoviesAppKt$appContent$1$1.invoke(Unknown Source:14)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:139)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.compose.AmbientKt.Providers(Ambient.kt:169)
at androidx.ui.material.SurfaceKt$Surface$1.invoke(Surface.kt:101)
at androidx.ui.material.SurfaceKt$Surface$1.invoke(Unknown Source:14)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:139)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.ui.core.LayoutKt.Layout(Layout.kt:167)
at androidx.ui.core.LayoutKt.Layout(Layout.kt:157)
at androidx.ui.material.SurfaceKt.SurfaceLayout(Surface.kt:123)
at androidx.ui.material.SurfaceKt.Surface-maZXub8(Surface.kt:91)
at com.blackcube.moviessearcher.ui.UiMoviesAppKt$appContent$1.invoke(UiMoviesApp.kt:19)
E/AndroidRuntime: at com.blackcube.moviessearcher.ui.UiMoviesAppKt$appContent$1.invoke(Unknown Source:16)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:148)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.ui.animation.CrossfadeKt$Crossfade$2$1$1.invoke(Crossfade.kt:81)
at androidx.ui.animation.CrossfadeKt$Crossfade$2$1$1.invoke(Unknown Source:14)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:139)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.ui.animation.CrossfadeKt$Crossfade$1$1$1.invoke(Crossfade.kt:71)
at androidx.ui.animation.CrossfadeKt$Crossfade$1$1$1.invoke(Unknown Source:16)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:148)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.ui.layout.StackKt$Stack$stackChildren$1.invoke(Stack.kt:50)
at androidx.ui.layout.StackKt$Stack$stackChildren$1.invoke(Unknown Source:14)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:139)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.ui.core.LayoutKt.Layout(Layout.kt:167)
at androidx.ui.core.LayoutKt.Layout(Layout.kt:157)
at androidx.ui.layout.StackKt.Stack(Stack.kt:52)
at androidx.ui.animation.CrossfadeKt$Crossfade$1$1.invoke(Crossfade.kt:70)
at androidx.ui.animation.CrossfadeKt$Crossfade$1$1.invoke(Unknown Source:16)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:148)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.ui.animation.CrossfadeKt$Crossfade$2.invoke(Crossfade.kt:80)
at androidx.ui.animation.CrossfadeKt$Crossfade$2.invoke(Unknown Source:16)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:148)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.ui.layout.StackKt$Stack$stackChildren$1.invoke(Stack.kt:50)
at androidx.ui.layout.StackKt$Stack$stackChildren$1.invoke(Unknown Source:14)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:139)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.ui.core.LayoutKt.Layout(Layout.kt:167)
at androidx.ui.core.LayoutKt.Layout(Layout.kt:157)
at androidx.ui.layout.StackKt.Stack(Stack.kt:52)
at androidx.ui.animation.CrossfadeKt.Crossfade(Crossfade.kt:76)
at com.blackcube.moviessearcher.ui.UiMoviesAppKt.appContent(UiMoviesApp.kt:18)
at com.blackcube.moviessearcher.ui.UiMoviesAppKt$UIMoviesApp$1.invoke(UiMoviesApp.kt:12)
at com.blackcube.moviessearcher.ui.UiMoviesAppKt$UIMoviesApp$1.invoke(Unknown Source:14)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:139)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at com.blackcube.moviessearcher.ui.UiMoviesAppKt$appTheme$1.invoke(UiMoviesApp.kt:32)
at com.blackcube.moviessearcher.ui.UiMoviesAppKt$appTheme$1.invoke(Unknown Source:14)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:139)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.compose.AmbientKt.Providers(Ambient.kt:169)
at androidx.ui.foundation.TextKt.ProvideTextStyle(Text.kt:231)
at androidx.ui.material.MaterialThemeKt$MaterialTheme$1$1.invoke(MaterialTheme.kt:66)
at androidx.ui.material.MaterialThemeKt$MaterialTheme$1$1.invoke(Unknown Source:14)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:139)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.compose.AmbientKt.Providers(Ambient.kt:169)
at androidx.ui.material.MaterialThemeKt$MaterialTheme$1.invoke(MaterialTheme.kt:61)
at androidx.ui.material.MaterialThemeKt$MaterialTheme$1.invoke(Unknown Source:14)
E/AndroidRuntime: at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:139)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.compose.AmbientKt.Providers(Ambient.kt:169)
at androidx.ui.material.ColorKt.ProvideColorPalette(Color.kt:307)
at androidx.ui.material.MaterialThemeKt.MaterialTheme(MaterialTheme.kt:59)
at com.blackcube.moviessearcher.ui.UiMoviesAppKt.appTheme(UiMoviesApp.kt:31)
at com.blackcube.moviessearcher.ui.UiMoviesAppKt.UIMoviesApp(UiMoviesApp.kt:11)
at com.blackcube.moviessearcher.ui.MainActivity$onCreate$1.invoke(MainActivity.kt:14)
at com.blackcube.moviessearcher.ui.MainActivity$onCreate$1.invoke(Unknown Source:14)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:139)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.ui.core.selection.SelectionContainerKt$SelectionContainer$3$1.invoke(SelectionContainer.kt:100)
at androidx.ui.core.selection.SelectionContainerKt$SelectionContainer$3$1.invoke(Unknown Source:14)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:139)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.ui.core.LayoutKt.Layout(Layout.kt:167)
at androidx.ui.core.LayoutKt.Layout(Layout.kt:157)
at androidx.ui.core.selection.SelectionContainerKt.Wrap(SelectionContainer.kt:156)
at androidx.ui.core.selection.SelectionContainerKt.access$Wrap(Unknown Source:0)
at androidx.ui.core.selection.SelectionContainerKt$SelectionContainer$3.invoke(SelectionContainer.kt:99)
at androidx.ui.core.selection.SelectionContainerKt$SelectionContainer$3.invoke(Unknown Source:14)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:139)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.compose.AmbientKt.Providers(Ambient.kt:169)
at androidx.ui.core.selection.SelectionContainerKt.SelectionContainer(SelectionContainer.kt:96)
at androidx.ui.core.selection.SelectionContainerKt.SelectionContainer(SelectionContainer.kt:55)
at androidx.ui.core.WrapperKt.WrapWithSelectionContainer(Wrapper.kt:168)
at androidx.ui.core.WrapperKt.access$WrapWithSelectionContainer(Unknown Source:0)
at androidx.ui.core.WrappedComposition$setContent$1$1.invoke(Wrapper.kt:248)
at androidx.ui.core.WrappedComposition$setContent$1$1.invoke(Unknown Source:14)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:139)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.compose.AmbientKt.Providers(Ambient.kt:169)
at androidx.ui.core.WrapperKt.WrapWithAmbients(Wrapper.kt:325)
at androidx.ui.core.WrapperKt.access$WrapWithAmbients(Unknown Source:0)
at androidx.ui.core.WrappedComposition$setContent$1.invoke(Wrapper.kt:247)
at androidx.ui.core.WrappedComposition$setContent$1.invoke(Unknown Source:14)
at androidx.compose.internal.RestartableFunction.invoke(RestartableFunction.kt:139)
at androidx.compose.internal.RestartableFunction.invoke(Unknown Source:14)
at androidx.compose.ComposerKt.invokeComposable(Composer.kt:2302)
at androidx.compose.Recomposer.recompose$compose_runtime_release(Recomposer.kt:77)
at androidx.compose.CompositionImpl.setContent(Composition.kt:120)
at androidx.ui.core.WrappedComposition.setContent(Wrapper.kt:246)
at androidx.ui.core.WrappedComposition$setContent$2.invoke(Wrapper.kt:257)
at androidx.ui.core.WrappedComposition$setContent$2.invoke(Unknown Source:2)
at androidx.ui.core.SavedStateDelegate.stopWaitingForStateRestoration(SavedStateDelegate.kt:83)
at androidx.ui.core.AndroidComposeView.onMeasure(AndroidComposeView.kt:321)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
E/AndroidRuntime: at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:724)
at android.view.View.measure(View.java:22071)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2422)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1504)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1761)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1392)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6752)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
at android.view.Choreographer.doCallbacks(Choreographer.java:723)
at android.view.Choreographer.doFrame(Choreographer.java:658)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
I/zygote: Do partial code cache collection, code=29KB, data=28KB
I/zygote: After code cache collection, code=29KB, data=28KB
Increasing code cache capacity to 128KB
The reason is here as I understand:
@Composable
fun <T : Any> rememberSavedInstanceState(
vararg inputs: Any?,
saver: Saver<T, out Any> = autoSaver(),
key: String? = null,
init: () -> T
): T {
val finalKey = if (!key.isNullOrEmpty()) {
key
} else {
currentComposer.currentCompoundKeyHash.toString()
}
val registry = UiSavedStateRegistryAmbient.current
val valueProvider = remember(*inputs) { ValueProvider<T>() }
return valueProvider.updateAndReturnValue(registry, saver, finalKey, init)
}
currentComposer.currentCompoundKeyHash returns the same key for every embedded ScrollPosition
If I do not use for-loop then everithing is ok:
@Composable
fun content() {
VerticalScroller {
embeddedHorizontalScroll()
embeddedHorizontalScroll()
embeddedHorizontalScroll()
embeddedHorizontalScroll()
embeddedHorizontalScroll()
embeddedHorizontalScroll()
}
}