mapbox / mapbox/mapbox-maps-android

ApplicationNotResponding: ANR in LifecycleMonitorAndroid

Aperta
#2,709 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

bug :beetle:
Lingua principale
Kotlin
Stelle
578
Fork
161
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia da LifecycleMonitorAndroid.updateLifecycleState e traccia la registrazione di ActivityLifecycleCallbacks attivata dopo l’impostazione di MapboxOptions.accessToken. Riproduci il problema con un’inizializzazione di Application.onCreate e un’activity senza MapView; il lavoro è completato quando la ripresa dell’activity non causa più un ANR sul thread principale.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
android, kotlin
Ambito
mobile, performance
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.