Open Psijic opened 1 year ago
I have the same issue and it's easy to reproduce. I have 200+ markers. By quickly tapping on the 200+ circle, map zooms in low res. Before it renders high res map and draw all markers, I navigate back to the previous screen. Within a second app crashes with the mentioned error.
Just tested with the latest release 3.0.0 and the issue is still there.
I found the cause of the crash in my case:
val cameraPositionState = rememberCameraPositionState()
GoogleMap(
modifier = Modifier.fillMaxSize(),
cameraPositionState = cameraPositionState,
) {
Clustering(
items = items,
clusterItemContent = { mapDataClass ->
ClusterItemContent(
mapDataClass = mapDataClass,
isCameraMoving = cameraPositionState.isMoving,
)
},
)
}
Looks like cameraPositionState
changes when the screen is already leaving composition. Without using cameraPositionState
for clusterItemContent
, the app won't crash.
I even found a workaround:
var isScreenClosing by remember { mutableStateOf(false) }
I set this boolean to true before navigating. Then I updated clusterItemContent
:
clusterItemContent = { mapDataClass ->
if (!isScreenClosing) {
ClusterItemContent(
mapDataClass = mapDataClass,
isCameraMoving = cameraPositionState.isMoving,
)
}
},
With this I wasn't able to replicate the crash anymore.
Anyway, I'm not 100% confident with this workaround. It doesn't cover scenarios when navigation changes outside of the screen with map.
Proper fix should be that this library shouldn't try to update marker icons while it's being released.
What is isScreenClosing
? Some flag toggled in Disposable
?
@Psijic it's just a var I created that I'm setting to true before navigating out of the screen. That way I can prevent recomposition of clusterItemContent
. It's not perfect, because when navigation is changed outside of the screen, then the screen has no idea and it can still crash. It's safer to prevent using cameraPositionState
inside clusterItemContent
...
I'm going to check the source code of DefaultClusterRenderer
looking for a better solution.
Got this crash too.
I'm not using Cluster but simply MarkerComposable
Hi folks,
The following PR might fix this issue. The Clustering was not being disposed, so probably with a large number of markers the process to deal with items in a cluster could be somehow taking longer, and by the time an item is going to be updated the map does not longer exist. I will let you know when it is merged and maybe you folks can take a look.
Same problem, appeared when upgrading from 2.14.0 to 4.1.1. I only use markers without clustering.
Fatal Exception: java.lang.IllegalArgumentException
Unmanaged descriptor
com.google.maps.api.android.lib6.common.p.a (:com.google.android.gms.policy_maps_core_dynamite@233610105@233610102065.573949206.573949206:10)
com.google.maps.api.android.lib6.impl.ab.a (:com.google.android.gms.policy_maps_core_dynamite@233610105@233610102065.573949206.573949206:17)
com.google.maps.api.android.lib6.impl.el.V (:com.google.android.gms.policy_maps_core_dynamite@233610105@233610102065.573949206.573949206:6)
com.google.maps.api.android.lib6.phoenix.bj.v (:com.google.android.gms.policy_maps_core_dynamite@233610105@233610102065.573949206.573949206:7)
com.google.maps.api.android.lib6.phoenix.bj.h (:com.google.android.gms.policy_maps_core_dynamite@233610105@233610102065.573949206.573949206:153)
com.google.maps.api.android.lib6.impl.es.run (:com.google.android.gms.policy_maps_core_dynamite@233610105@233610102065.573949206.573949206:54)
android.os.Handler.handleCallback (Handler.java:971)
android.os.Handler.dispatchMessage (Handler.java:107)
android.os.Looper.loopOnce (Looper.java:206)
android.os.Looper.loop (Looper.java:296)
android.app.ActivityThread.main (ActivityThread.java:9159)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:591)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1018)
@kikoso, hi! Has the problem been fixed in 4.3.0?
Hi @0xffrom .
The latest version (4.3.0) includes a fix that disposes of clusters, which was not happening in previous versions.
If you aren't using Clustering, this is likely another issue. Could you provide another code snippet with the relevant code block? (for instance, the region where you are adding the Marker to the Map).
@kikoso I've retested with version 4.3.0 and I wasn't able to reproduce the crash. I believe the clustering issue is now gone, thank you!
Thanks for letting us know, @milosfec !
Closing this as fixed by #458 in v4.3.0. Please re-open if it recurs in v4.3.0 or later.
Hello, I am facing this problem on version v4.3.0, when the number of markers in the cluster exceeds 100 elements
android.net.ConnectivityManager$TooManyRequestsException
at android.net.ConnectivityManager.convertServiceException(ConnectivityManager.java:4165)
at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4357)
at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4364)
at android.net.ConnectivityManager.registerNetworkCallback(ConnectivityManager.java:4746)
at android.net.ConnectivityManager.registerNetworkCallback(ConnectivityManager.java:4716)
at m.fbc.h(:com.google.android.gms.policy_maps_core_dynamite@234210305@234210302065.578192611.578192611:41)
at m.fbc.<init>(:com.google.android.gms.policy_maps_core_dynamite@234210305@234210302065.578192611.578192611:140)
at com.google.maps.api.android.lib6.impl.hz.<init>(:com.google.android.gms.policy_maps_core_dynamite@234210305@234210302065.578192611.578192611:7)
at com.google.android.gms.maps.internal.CreatorImpl.c(:com.google.android.gms.policy_maps_core_dynamite@234210305@234210302065.578192611.578192611:1157)
at com.google.android.gms.maps.internal.CreatorImpl.logInitialization(:com.google.android.gms.policy_maps_core_dynamite@234210305@234210302065.578192611.578192611:16)
at com.google.android.gms.maps.internal.i.bp(:com.google.android.gms.policy_maps_core_dynamite@234210305@234210302065.578192611.578192611:75)
at m.bcb.onTransact(:com.google.android.gms.policy_maps_core_dynamite@234210305@234210302065.578192611.578192611:21)
at android.os.Binder.transact(Binder.java:1188)
at com.google.android.gms.internal.maps.zza.zzc(com.google.android.gms:play-services-maps@@18.2.0:2)
at com.google.android.gms.maps.internal.zze.zzl(com.google.android.gms:play-services-maps@@18.2.0:4)
at com.google.android.gms.maps.MapsInitializer.initialize(com.google.android.gms:play-services-maps@@18.2.0:12)
at com.google.android.gms.maps.MapsInitializer.initialize(com.google.android.gms:play-services-maps@@18.2.0:1)
at com.google.android.gms.maps.zzai.zzb(com.google.android.gms:play-services-maps@@18.2.0:2)
at com.google.android.gms.maps.zzai.createDelegate(com.google.android.gms:play-services-maps@@18.2.0:1)
at com.google.android.gms.dynamic.DeferredLifecycleHelper.zaf(com.google.android.gms:play-services-base@@18.1.0:6)
at com.google.android.gms.dynamic.DeferredLifecycleHelper.onCreate(com.google.android.gms:play-services-base@@18.1.0:1)
at com.google.android.gms.maps.MapView.onCreate(com.google.android.gms:play-services-maps@@18.2.0:4)
at com.google.maps.android.compose.GoogleMapKt.lifecycleObserver$lambda$11(GoogleMap.kt:207)
at com.google.maps.android.compose.GoogleMapKt.$r8$lambda$Vm6abttjyrD0BNPAw0a-nOgtk1E(Unknown Source:0)
at com.google.maps.android.compose.GoogleMapKt$$ExternalSyntheticLambda0.onStateChanged(Unknown Source:4)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.kt:314)
at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.kt:192)
at com.google.maps.android.compose.GoogleMapKt$MapLifecycle$1.invoke(GoogleMap.kt:182)
at com.google.maps.android.compose.GoogleMapKt$MapLifecycle$1.invoke(GoogleMap.kt:178)
at androidx.compose.runtime.DisposableEffectImpl.onRemembered(Effects.kt:82)
at androidx.compose.runtime.CompositionImpl$RememberEventDispatcher.dispatchRememberObservers(Composition.kt:1137)
at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:828)
at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:849)
at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:1041)
at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:4007)
at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:4007)
at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:520)
Hi @wangela ,
Firebase Analytics indicates that this issue is still happening in the newest release of our app, which uses version 4.3.0.
Fatal Exception: java.lang.IllegalArgumentException: Unmanaged descriptor
at com.google.maps.api.android.lib6.common.m.b(:com.google.android.gms.dynamite_mapsdynamite@240213038@24.02.13 (190400-0):10)
at com.google.maps.api.android.lib6.impl.w.c(:com.google.android.gms.dynamite_mapsdynamite@240213038@24.02.13 (190400-0):18)
at com.google.maps.api.android.lib6.impl.cw.u(:com.google.android.gms.dynamite_mapsdynamite@240213038@24.02.13 (190400-0):11)
at com.google.android.gms.maps.model.internal.r.bb(:com.google.android.gms.dynamite_mapsdynamite@240213038@24.02.13 (190400-0):347)
at m.ee.onTransact(:com.google.android.gms.dynamite_mapsdynamite@240213038@24.02.13 (190400-0):21)
at android.os.Binder.transact(Binder.java:1173)
at com.google.android.gms.internal.maps.zza.zzc(com.google.android.gms:play-services-maps@@18.2.0:2)
at com.google.android.gms.internal.maps.zzab.zzt(com.google.android.gms:play-services-maps@@18.2.0:3)
at com.google.android.gms.maps.model.Marker.setIcon(com.google.android.gms:play-services-maps@@18.2.0:2)
at com.google.maps.android.clustering.view.DefaultClusterRenderer.onClusterUpdated(DefaultClusterRenderer.java:972)
at com.google.maps.android.clustering.view.DefaultClusterRenderer$CreateMarkerTask.perform(DefaultClusterRenderer.java:1091)
at com.google.maps.android.clustering.view.DefaultClusterRenderer$CreateMarkerTask.access$1900(DefaultClusterRenderer.java:1027)
at com.google.maps.android.clustering.view.DefaultClusterRenderer$MarkerModifier.performNextTask(DefaultClusterRenderer.java:738)
at com.google.maps.android.clustering.view.DefaultClusterRenderer$MarkerModifier.handleMessage(DefaultClusterRenderer.java:710)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loopOnce(Looper.java:238)
at android.os.Looper.loop(Looper.java:357)
at android.app.ActivityThread.main(ActivityThread.java:8194)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:957)
Hi everyone, I am also facing the issue with the 4.3.0 I never managed to reproduce it during development, however, our users experience it.
Fatal Exception: android.net.ConnectivityManager$TooManyRequestsException:
at android.net.ConnectivityManager.convertServiceException(ConnectivityManager.java:4165)
at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4357)
at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4364)
at android.net.ConnectivityManager.registerNetworkCallback(ConnectivityManager.java:4746)
at android.net.ConnectivityManager.registerNetworkCallback(ConnectivityManager.java:4716)
at m.fbc.h(:com.google.android.gms.policy_maps_core_dynamite@234210309@234210304065.587101654.587101654:41)
at m.fbc.e(:com.google.android.gms.policy_maps_core_dynamite@234210309@234210304065.587101654.587101654:1)
at com.google.maps.api.android.lib6.impl.p.b(:com.google.android.gms.policy_maps_core_dynamite@234210309@234210304065.587101654.587101654:27)
at com.google.maps.api.android.lib6.impl.cm.aY(:com.google.android.gms.policy_maps_core_dynamite@234210309@234210304065.587101654.587101654:3)
at com.google.maps.api.android.lib6.impl.cm.D(:com.google.android.gms.policy_maps_core_dynamite@234210309@234210304065.587101654.587101654:32)
at com.google.maps.api.android.lib6.impl.eh.l(:com.google.android.gms.policy_maps_core_dynamite@234210309@234210304065.587101654.587101654:3)
at com.google.android.gms.maps.internal.s.bp(:com.google.android.gms.policy_maps_core_dynamite@234210309@234210304065.587101654.587101654:14)
at m.bcb.onTransact(:com.google.android.gms.policy_maps_core_dynamite@234210309@234210304065.587101654.587101654:21)
at android.os.Binder.transact(Binder.java:1188)
at com.google.android.gms.internal.maps.zza.zzc(zza.java:2)
at com.google.android.gms.maps.internal.zzl.onStart(zzl.java:2)
at com.google.android.gms.maps.zzah.onStart(com.google.android.gms:play-services-maps@@18.2.0:1)
at com.google.android.gms.dynamic.zaf.zab(com.google.android.gms:play-services-base@@18.3.0:1)
at com.google.android.gms.dynamic.DeferredLifecycleHelper.zaf(com.google.android.gms:play-services-base@@18.3.0:1)
at com.google.android.gms.dynamic.DeferredLifecycleHelper.onStart(DeferredLifecycleHelper.java:1)
at com.google.android.gms.maps.MapView.onStart(MapView.java:1)
at com.google.maps.android.compose.GoogleMapKt.lifecycleObserver$lambda$11(GoogleMap.kt:211)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.kt:322)
at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.kt:199)
at com.google.maps.android.compose.GoogleMapKt$MapLifecycle$1.invoke(GoogleMap.kt:182)
at com.google.maps.android.compose.GoogleMapKt$MapLifecycle$1.invoke(GoogleMap.kt:178)
at androidx.compose.runtime.DisposableEffectImpl.onRemembered(Effects.kt:82)
at androidx.compose.runtime.CompositionImpl$RememberEventDispatcher.dispatchRememberObservers(Composition.kt:1137)
at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:828)
at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:849)
at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:1041)
at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:4007)
at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:4007)
at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:520)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState.subcomposeInto(SubcomposeLayout.kt:721)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState.subcompose(SubcomposeLayout.kt:694)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState.subcompose(SubcomposeLayout.kt:685)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState.subcompose(SubcomposeLayout.kt:669)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$Scope.subcompose(SubcomposeLayout.kt:1014)
at androidx.compose.material3.BottomSheetScaffoldKt$BottomSheetScaffoldLayout$1$1.invoke-0kLqBqw(BottomSheetScaffold.kt:347)
at androidx.compose.material3.BottomSheetScaffoldKt$BottomSheetScaffoldLayout$1$1.invoke(BottomSheetScaffold.kt:329)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1.measure-3p2s80s(SubcomposeLayout.kt:866)
at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:126)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1499)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1495)
at androidx.compose.runtime.snapshots.Snapshot.enter(Snapshot.java:131)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:476)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:467)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:230)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:113)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:1495)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$getNextChildLookaheadPlaceOrder$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:560)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.measure-BRTryo0(LayoutNodeLayoutDelegate.kt:539)
at androidx.compose.foundation.layout.BoxKt$boxMeasurePolicy$1.measure-3p2s80s(Box.kt:114)
at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:126)
at androidx.compose.foundation.layout.FillNode.measure-3p2s80s(Size.kt:698)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1499)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1495)
at androidx.compose.runtime.snapshots.Snapshot.enter(Snapshot.java:131)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:476)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:467)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:230)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:113)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:1495)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$getNextChildLookaheadPlaceOrder$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:560)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.measure-BRTryo0(LayoutNodeLayoutDelegate.kt:539)
at androidx.compose.animation.AnimatedEnterExitMeasurePolicy.measure-3p2s80s(AnimatedVisibility.kt:795)
at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:126)
at androidx.compose.ui.graphics.BlockGraphicsLayerModifier.measure-3p2s80s(GraphicsLayerModifier.kt:578)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116)
at androidx.compose.animation.AnimatedContentKt$AnimatedContent$6$1$1.invoke-3p2s80s(AnimatedContent.kt:763)
at androidx.compose.animation.AnimatedContentKt$AnimatedContent$6$1$1.invoke(AnimatedContent.kt:762)
at androidx.compose.ui.layout.LayoutModifierImpl.measure-3p2s80s(LayoutModifier.kt:291)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1499)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1495)
at androidx.compose.runtime.snapshots.Snapshot.enter(Snapshot.java:131)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:476)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:467)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:230)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:113)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:1495)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$getNextChildLookaheadPlaceOrder$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:560)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.measure-BRTryo0(LayoutNodeLayoutDelegate.kt:539)
at androidx.compose.animation.AnimatedContentMeasurePolicy.measure-3p2s80s(AnimatedContent.kt:814)
at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:126)
at androidx.compose.animation.AnimatedContentTransitionScopeImpl$SizeModifier.measure-3p2s80s(AnimatedContent.kt:598)
at androidx.compose.ui.node.BackwardsCompatNode.measure-3p2s80s(BackwardsCompatNode.kt:311)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116)
at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s(GraphicsLayerModifier.kt:646)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:116)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1499)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1495)
at androidx.compose.runtime.snapshots.Snapshot.enter(Snapshot.java:131)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:476)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:467)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:230)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133)
at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release(OwnerSnapshotObserver.kt:113)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0(LayoutNodeLayoutDelegate.kt:1495)
at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$getNextChildLookaheadPlaceOrder$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:560)
at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release(LayoutNode.kt:1140)
at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release$default(LayoutNode.kt:1131)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure-sdFAvZA(MeasureAndLayoutDelegate.kt:323)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt:458)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.access$getRoot$p(MeasureAndLayoutDelegate.kt)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.access$remeasureAndRelayoutIfNeeded(MeasureAndLayoutDelegate.kt)
at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout(MeasureAndLayoutDelegate.kt:344)
at androidx.compose.ui.platform.AndroidComposeView.measureAndLayout(AndroidComposeView.android.kt:879)
at androidx.compose.ui.node.Owner.measureAndLayout$default(Owner.kt:223)
at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(AndroidComposeView.android.kt:1127)
at android.view.View.draw(View.java:23469)
at android.view.View.updateDisplayListIfDirty(View.java:22297)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4595)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4568)
at android.view.View.updateDisplayListIfDirty(View.java:22248)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4595)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4568)
at android.view.View.updateDisplayListIfDirty(View.java:22248)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4595)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4568)
at android.view.View.updateDisplayListIfDirty(View.java:22248)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4595)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4568)
at android.view.View.updateDisplayListIfDirty(View.java:22248)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:682)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:688)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:790)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:4898)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4593)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3759)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2453)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9468)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1405)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1413)
at android.view.Choreographer.doCallbacks(Choreographer.java:1040)
at android.view.Choreographer.doFrame(Choreographer.java:930)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1388)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:240)
at android.os.Looper.loop(Looper.java:351)
at android.app.ActivityThread.main(ActivityThread.java:8423)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)
we need to reopen issue , if it still exists in current versions
Any update on this? Can this ticket be reopened please? It blocks us from using the Compose map in our app.
I'm also having the issue with a large number of markers on the screen.
I am also facing the same issue
Reopening this issue to further investigate it.
Do you folks have any code snippet we can use to reproduce it?
This bug wasn't solved. Got it today. Just use a lot of markers in clustering - wait for them to start show on the map and then switch screens (navigate) before all of them became rendered.
Code:
selectedEvent
wasn't even used here. So, all markers had default view and their count was: 32632.