android-maps-compose icon indicating copy to clipboard operation
android-maps-compose copied to clipboard

Crash when opening the map

Open JeevanRupacha opened this issue 1 year ago • 6 comments

Environment details

  1. maps compose version 5.0.3
  2. Jetpack compose version 1.6.7
  3. Material3 version 1.2.1

Code example

GoogleMap(
            modifier = Modifier.fillMaxSize()
        ) {
            MapEffect(key1 = clusterItems) { map ->
}
}
)

Stack trace

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.fef.c(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:41)
                                                                                                    	at m.fef.<init>(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:140)
                                                                                                    	at com.google.maps.api.android.lib6.impl.ib.<init>(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:7)
                                                                                                    	at com.google.android.gms.maps.internal.CreatorImpl.d(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:1151)
                                                                                                    	at com.google.android.gms.maps.internal.CreatorImpl.logInitialization(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:60)
                                                                                                    	at com.google.android.gms.maps.internal.i.bq(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:73)
                                                                                                    	at m.bcw.onTransact(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:21)
                                                                                                    	at android.os.Binder.transact(Binder.java:1183)
                                                                                                    	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.3.0:6)
                                                                                                    	at com.google.android.gms.dynamic.DeferredLifecycleHelper.onCreate(com.google.android.gms:play-services-base@@18.3.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$12(GoogleMap.kt:209)
                                                                                                    	at com.google.maps.android.compose.GoogleMapKt.$r8$lambda$OyhSHZmxT3lf78-uP6q1KJOt96o(Unknown Source:0)
                                                                                                    	at com.google.maps.android.compose.GoogleMapKt$$ExternalSyntheticLambda0.onStateChanged(Unknown Source:4)
                                                                                                    	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:184)
                                                                                                    	at com.google.maps.android.compose.GoogleMapKt$MapLifecycle$1.invoke(GoogleMap.kt:180)
                                                                                                    	at androidx.compose.runtime.DisposableEffectImpl.onRemembered(Effects.kt:83)
                                                                                                    	at androidx.compose.runtime.CompositionImpl$RememberEventDispatcher.dispatchRememberObservers(Composition.kt:1295)
                                                                                                    	at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:984)
                                                                                                    	at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:1005)
                                                                                                    	at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:1099)
                                                                                                    	at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:3599)
                                                                                                    	at androidx.compose.runtime.ComposerImpl$CompositionContextImpl.composeInitial$runtime_release(Composer.kt:3599)
                                                                                                    	at androidx.compose.runtime.CompositionImpl.composeInitial(Composition.kt:633)

Thanks!

JeevanRupacha avatar Jun 18 '24 10:06 JeevanRupacha

Hi @JeevanRupacha ,

The error strack trace does not seem to be related to the code snippet. Are you doing something else besides trying to cluster, like executing a network call?

kikoso avatar Jun 18 '24 13:06 kikoso

@kikoso I am doing clustering based on already fetched data. I mean even I didn't do any clustering and just run the only above code I got crash. By the way this crash happens when I try to open google map quickly after app launch and if I wait minute or more and execute then works very fine.

Just This code:

GoogleMap(){{}

JeevanRupacha avatar Jun 18 '24 15:06 JeevanRupacha

I have the same issue with maps compose 6.1.1, compose 1.6.10, kotlin 2.0.0. App just hangs for a second and then crashes with the same stacktrace

private val StaticMapUi = MapUiSettings(
    zoomControlsEnabled = false,
    zoomGesturesEnabled = false,
    compassEnabled = false,
    indoorLevelPickerEnabled = false,
    mapToolbarEnabled = false,
    myLocationButtonEnabled = false,
    rotationGesturesEnabled = false,
    scrollGesturesEnabled = false,
    scrollGesturesEnabledDuringRotateOrZoom = false,
    tiltGesturesEnabled = false
)

...
@Composable
fun Test() {
    Column {
        ....
        val markerPosition = LatLng(20.0, 20.0)
        val cameraPositionState = rememberCameraPositionState {
            position = CameraPosition.fromLatLngZoom(markerPosition, MapZoom)
        }

        GoogleMap(
            cameraPositionState = cameraPositionState,
            modifier = Modifier.Companion
                .fillMaxWidth()
                .height(RestaurantMapHeight)
                .clip(MaterialTheme.shapes.large),
            uiSettings = StaticMapUi,
        ) {
            Marker(
                state = MarkerState(position = markerPosition),
            )
        }
        ....
    }
}

Xlopec avatar Aug 15 '24 11:08 Xlopec

same here.

superbattery avatar Aug 18 '24 12:08 superbattery

We experience the same issue:

https://byairapp-sl.sentry.io/share/issue/7a338366b2a24cc5b451e9bb5e5260d1/

upd: Our issue was not related to google maps itself. We use coil for loading images. For each image we have a custom image loader (for a puprose). And it happened that way, each image loader request inits network observer by default. 100+ images initiate the same amount of network observers whech leads to the crash when user opens google map (which registers own network observer).

maximality avatar Aug 21 '24 13:08 maximality

I have the same problem.

If you do not open the map for more than 15 minutes after running the app, the above conflict will occur.

There are currently two collisions: m.fdy.c and m.feb.c.

Below is my stack.

  1. m.fdy.c
  • Fatal Exception: android.net.ConnectivityManager$TooManyRequestsException: at android.net.ConnectivityManager.convertServiceException(ConnectivityManager.java:4236) at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4437) at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4444) at android.net.ConnectivityManager.registerNetworkCallback(ConnectivityManager.java:4826) at android.net.ConnectivityManager.registerNetworkCallback(ConnectivityManager.java:4796) at m.fdy.c(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:29) at com.google.maps.api.android.lib6.impl.q.b(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:29) at com.google.maps.api.android.lib6.impl.co.aZ(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:3) at com.google.maps.api.android.lib6.impl.co.D(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:32) at com.google.maps.api.android.lib6.impl.ek.k(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:11) at com.google.android.gms.maps.internal.r.dispatchTransaction(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:14) at m.bco.onTransact(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:13) at android.os.Binder.transact(Binder.java:1190) at com.google.android.gms.internal.maps.zza.zzc(com.google.android.gms:play-services-maps@@19.0.0:2) at com.google.android.gms.maps.internal.zzl.onStart(com.google.android.gms:play-services-maps@@19.0.0:2) at com.google.android.gms.maps.zzah.onStart(com.google.android.gms:play-services-maps@@19.0.0:1) at com.google.android.gms.dynamic.zaf.zab(com.google.android.gms:play-services-base@@18.4.0:1) at com.google.android.gms.dynamic.DeferredLifecycleHelper.zaf(com.google.android.gms:play-services-base@@18.4.0:1) at com.google.android.gms.dynamic.DeferredLifecycleHelper.onStart(com.google.android.gms:play-services-base@@18.4.0:1) at com.google.android.gms.maps.MapView.onStart(com.google.android.gms:play-services-maps@@19.0.0:1) at com.google.maps.android.compose.GoogleMapKt.lifecycleObserver$lambda$12(GoogleMap.kt:214) 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:185) at com.google.maps.android.compose.GoogleMapKt$MapLifecycle$1.invoke(GoogleMap.kt:181) at androidx.compose.runtime.DisposableEffectImpl.onRemembered(Effects.kt:83) at androidx.compose.runtime.CompositionImpl$RememberEventDispatcher.dispatchRememberObservers(Composition.kt:1295) at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:984) at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:1005) at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:639) at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:551) at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:41) at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109) at androidx.compose.ui.platform.AndroidUiDispatcher.access$setScheduledFrameDispatch$p(AndroidUiDispatcher.android.kt) at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt) at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1666) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1677) at android.view.Choreographer.doCallbacks(Choreographer.java:1190) at android.view.Choreographer.doFrame(Choreographer.java:1056) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1647) at android.os.Handler.handleCallback(Handler.java:958) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:222) at android.os.Looper.loop(Looper.java:314) at android.app.ActivityThread.main(ActivityThread.java:8602) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:565) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
  1. m.feb.c
  • Fatal Exception: android.net.ConnectivityManager$TooManyRequestsException: at android.net.ConnectivityManager.convertServiceException(ConnectivityManager.java:4236) at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4437) at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4444) at android.net.ConnectivityManager.registerNetworkCallback(ConnectivityManager.java:4826) at android.net.ConnectivityManager.registerNetworkCallback(ConnectivityManager.java:4796) at m.feb.c(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:29) at m.feb.(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:140) at com.google.maps.api.android.lib6.impl.hw.(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:6) at com.google.android.gms.maps.internal.CreatorImpl.b(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:1142) at com.google.android.gms.maps.internal.CreatorImpl.logInitialization(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:16) at com.google.android.gms.maps.internal.i.dispatchTransaction(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:73) at m.bdb.onTransact(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:13) at android.os.Binder.transact(Binder.java:1067) at com.google.android.gms.internal.maps.zza.zzc(com.google.android.gms:play-services-maps@@19.0.0:2) at com.google.android.gms.maps.internal.zze.zzl(com.google.android.gms:play-services-maps@@19.0.0:4) at com.google.android.gms.maps.MapsInitializer.initialize(com.google.android.gms:play-services-maps@@19.0.0:12) at com.google.android.gms.maps.MapsInitializer.initialize(com.google.android.gms:play-services-maps@@19.0.0:1) at com.google.android.gms.maps.zzai.zzb(com.google.android.gms:play-services-maps@@19.0.0:2) at com.google.android.gms.maps.zzai.createDelegate(com.google.android.gms:play-services-maps@@19.0.0:1) at com.google.android.gms.dynamic.DeferredLifecycleHelper.zaf(com.google.android.gms:play-services-base@@18.4.0:6) at com.google.android.gms.dynamic.DeferredLifecycleHelper.onCreate(com.google.android.gms:play-services-base@@18.4.0:1) at com.google.android.gms.maps.MapView.onCreate(com.google.android.gms:play-services-maps@@19.0.0:4) at com.google.maps.android.compose.GoogleMapKt.lifecycleObserver$lambda$12(GoogleMap.kt:210) 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:185) at com.google.maps.android.compose.GoogleMapKt$MapLifecycle$1.invoke(GoogleMap.kt:181) at androidx.compose.runtime.DisposableEffectImpl.onRemembered(Effects.kt:83) at androidx.compose.runtime.CompositionImpl$RememberEventDispatcher.dispatchRememberObservers(Composition.kt:1295) at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:984) at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:1005) at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:639) at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:551) at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:41) at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109) at androidx.compose.ui.platform.AndroidUiDispatcher.access$setScheduledFrameDispatch$p(AndroidUiDispatcher.android.kt) at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt) at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1127) at android.view.Choreographer.doCallbacks(Choreographer.java:918) at android.view.Choreographer.doFrame(Choreographer.java:824) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1112) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:241) at android.os.Looper.loop(Looper.java:342) at android.app.ActivityThread.main(ActivityThread.java:8131) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:583) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1045)

ghost avatar Aug 22 '24 02:08 ghost

We have been running into this issue for some months now, and all optimizations to avoid memory leaks have not helped. Here is the crash log

`      Fatal Exception: android.net.ConnectivityManager$TooManyRequestsException:
       at android.net.ConnectivityManager.convertServiceException(ConnectivityManager.java:4447)
       at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4723)
       at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4846)
       at android.net.ConnectivityManager.registerNetworkCallback(ConnectivityManager.java:5228)
       at android.net.ConnectivityManager.registerNetworkCallback(ConnectivityManager.java:5198)
       at m.fdi.c(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:29)
       at com.google.maps.api.android.lib6.impl.m.b(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:29)
       at com.google.maps.api.android.lib6.impl.cg.ba(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:3)
       at com.google.maps.api.android.lib6.impl.cg.E(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:32)
       at com.google.maps.api.android.lib6.impl.eo.l(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:11)
       at com.google.android.gms.maps.internal.r.bt(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:14)
       at m.axe.onTransact(:com.google.android.gms.policy_maps_core_dynamite@[email protected]:21)
       at android.os.Binder.transact(Binder.java:1192)
       at com.google.android.gms.internal.maps.zza.zzc(com.google.android.gms:play-services-maps@@19.0.0:2)
       at com.google.android.gms.maps.internal.zzl.onStart(com.google.android.gms:play-services-maps@@19.0.0:2)
       at com.google.android.gms.maps.zzah.onStart(com.google.android.gms:play-services-maps@@19.0.0:1)
       at com.google.android.gms.dynamic.zaf.zab(com.google.android.gms:play-services-base@@18.4.0:1)
       at com.google.android.gms.dynamic.DeferredLifecycleHelper.zaf(com.google.android.gms:play-services-base@@18.4.0:1)
       at com.google.android.gms.dynamic.DeferredLifecycleHelper.onStart(com.google.android.gms:play-services-base@@18.4.0:1)
       at com.google.android.gms.maps.MapView.onStart(com.google.android.gms:play-services-maps@@19.0.0:1)
       at com.premise.android.design.designsystem.compose.MapLifecycleEventObserver.invokeEvent(GoogleMapComposable.kt:181)
       at com.premise.android.design.designsystem.compose.MapLifecycleEventObserver.moveUp(GoogleMapComposable.kt:172)
       at com.premise.android.design.designsystem.compose.MapLifecycleEventObserver.moveToLifecycleState(GoogleMapComposable.kt:154)
       at com.premise.android.design.designsystem.compose.MapLifecycleEventObserver.onStateChanged(GoogleMapComposable.kt:131)
       at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.jvm.kt:320)
       at androidx.lifecycle.LifecycleRegistry.forwardPass(LifecycleRegistry.jvm.kt:257)
       at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.jvm.kt:293)
       at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.jvm.kt:142)
       at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.jvm.kt:124)
       at androidx.fragment.app.FragmentViewLifecycleOwner.handleLifecycleEvent(FragmentViewLifecycleOwner.java:100)
       at androidx.fragment.app.Fragment.performStart(Fragment.java:3199)
       at androidx.fragment.app.FragmentStateManager.start(FragmentStateManager.java:648)
       at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:304)
       at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:114)
       at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1675)
       at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3259)
       at androidx.fragment.app.FragmentManager.dispatchStart(FragmentManager.java:3184)
       at androidx.fragment.app.FragmentController.dispatchStart(FragmentController.java:274)
       at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:358)
       at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:251)
       at com.premise.android.base.PremiseActivity.onStart(PremiseActivity.kt:152)
       at com.premise.android.base.PremiseAuthenticatedActivity.onStart(PremiseAuthenticatedActivity.kt:151)
       at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1582)
       at android.app.Activity.performStart(Activity.java:8767)
       at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3922)
       at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:225)
       at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:205)
       at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:187)
       at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2547)
       at android.os.Handler.dispatchMessage(Handler.java:111)
       at android.os.Looper.loopOnce(Looper.java:242)
       at android.os.Looper.loop(Looper.java:362)
       at android.app.ActivityThread.main(ActivityThread.java:8393)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:992)
        ```

mayowa-egbewunmi avatar Feb 18 '25 00:02 mayowa-egbewunmi

I have the same issue. Anyone managed to get it right?

christiankipala avatar Mar 06 '25 13:03 christiankipala

I have the same issue. Anyone managed to get it right?

@christiankipala our issue was the same with @maximality's -> "each image loader request inits network observer by default"

panosx2-dsq avatar Mar 07 '25 06:03 panosx2-dsq

Hi @panosx2-dsq thanks for the response, so your issue was not related to GoogleMap?

christiankipala avatar Mar 07 '25 07:03 christiankipala

Hi @panosx2-dsq thanks for the response, not sure if you described the fix but could you please elaborate

Hi @christiankipala In our case, the problem was related to Coil's ImageLoader. By default, every time you create an ImageLoader, it initializes a network observer automatically. However, Google Maps also sets up its own network observer. This results in too many network observers, which causes a ConnectivityManager$TooManyRequestsException.

We resolved this issue by disabling the network observer in Coil's ImageLoader:

coil.ImageLoader.Builder(context)
    // other configurations
    .networkObserverEnabled(false) // <--
    .build()

I hope this helps!

panosx2-dsq avatar Mar 07 '25 08:03 panosx2-dsq

Thank you @panosx2-dsq , makes sense plus I do use coil's ImageLoader in my project. Just tell me, was the issue occurring randomly or consistently? In my project, it's quite random. I will disable the observer, monitor it, and give an update. Thanks again

christiankipala avatar Mar 07 '25 08:03 christiankipala

In my case depends on the amount of image loaded before open the map, so in order to simulate properly I create a test page that load about 100 images in a list and at the end I added the map view, the app crashed every time. Since I needed to have a custom ImageLoader I used the LocalContext.current.imageLoader provided by the coil 2.6.0. In case you are using coil3 use the singleton feature explained on https://coil-kt.github.io/coil/image_loaders/.

pucamafra avatar Mar 25 '25 13:03 pucamafra

Closing this issue, since it seems to be related to the parallel execution of Coil's and Maps network observers.

kikoso avatar May 06 '25 11:05 kikoso