Skip to content

ApplicationNotResponding: ANR in LifecycleMonitorAndroid #2709

@marcherdiego

Description

@marcherdiego

Environment

  • Android OS version: 16
  • Devices affected: Samsung SM-F966U1
  • Maps SDK Version: 11.17.1

Observed behavior and steps to reproduce

ANR in LifecycleMonitorAndroid.updateLifecycleState() during activity resume

The app experiences ANRs when any activity resumes, even activities that don't contain a MapView. The ANR occurs in Mapbox's internal lifecycle monitoring.

Stack trace:
io.sentry.android.core.ApplicationNotResponding: ANR
at com.mapbox.common.LifecycleMonitorAndroid.updateLifecycleState(unavailable:0)
at com.mapbox.common.LifecycleMonitorAndroid.access$updateLifecycleState(unavailable:0)
at com.mapbox.common.LifecycleMonitorAndroid$lifecycleServiceCallback$1.onLifecycleStateChanged(unavailable:7)
at com.mapbox.common.LifecycleService.updateLifecycleState(unavailable:13)
at com.mapbox.common.LifecycleService.getLifecycleState(SourceFile:12)
at com.mapbox.common.LifecycleService.registerActivityWithState(unavailable:111)
at com.mapbox.common.LifecycleService.access$registerActivityWithState(unavailable:0)
at com.mapbox.common.LifecycleService$callback$1.onActivityResumed(unavailable:10)
at android.app.Application.dispatchActivityResumed(Application.java:450)
at android.app.Activity.dispatchActivityResumed(Activity.java:1686)
at android.app.Activity.onResume(Activity.java:2287)
at androidx.fragment.app.FragmentActivity.onResume(unavailable:5)
at com.example.app.onboarding.OnboardingActivity.onResume(unavailable:0)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1720)
at android.app.Activity.performResume(Activity.java:9691)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:6162)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:6265)
...

Steps to reproduce:

  1. Initialize Mapbox SDK in Application.onCreate() by setting MapboxOptions.accessToken
  2. Launch any activity (doesn't need to contain a MapView)
  3. Observe ANR during onResume() in Mapbox's lifecycle callback

Expected behavior

LifecycleMonitorAndroid.updateLifecycleState() should not block the main thread and cause ANRs. Lifecycle state updates should be fast and non-blocking, or performed asynchronously.

Notes / preliminary analysis

  • It rarely happens
  • The ANR occurs in activities that have no MapView or map-related functionality
  • Once MapboxOptions.accessToken is set, Mapbox registers ActivityLifecycleCallbacks that run on every activity lifecycle event
  • The updateLifecycleState() method appears to perform blocking operations
  • There is no API available to disable or configure this automatic lifecycle monitoring
  • This affects user experience even when maps are not being displayed

Additional links and references

  • Related to lifecycle monitoring introduced in Mapbox Maps SDK v11
  • Using com.mapbox.maps:android-ndk27:11.17.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug 🪲Something isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions