ApplicationNotResponding: ANR in LifecycleMonitorAndroid
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 35/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 領域
- mobile, performance
調査の方向性
LifecycleMonitorAndroid.updateLifecycleState から開始し、MapboxOptions.accessToken が設定された後にトリガーされる ActivityLifecycleCallbacks の登録を追跡します。Application.onCreate による初期化と MapView のない activity で再現します。activity の再開によってメインスレッドで ANR が発生しなくなれば完了です。
索引モデルが issue の本文から書いたものです。
説明
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:
- Initialize Mapbox SDK in
Application.onCreate()by settingMapboxOptions.accessToken - Launch any activity (doesn't need to contain a MapView)
- 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.accessTokenis set, Mapbox registersActivityLifecycleCallbacksthat 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
- 主要言語
- Kotlin
- スター
- 577
- フォーク
- 161
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
mapbox/mapbox-maps-android のほかの issue
-
bug :beetle:
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
mapbox/mapbox-maps-android#2727 ·
-
bug :beetle:
難易度 5/5 1週間以上 初心者へのやさしさ 22/100
mapbox/mapbox-maps-android#2734 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
mapbox/mapbox-maps-android#2733 ·
-
bug :beetle:
難易度 4/5 3〜5日 初心者へのやさしさ 50/100
mapbox/mapbox-maps-android#2732 ·
-
auto-triaged bug :beetle:
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
mapbox/mapbox-maps-android#2731 · リアクション 4 件 ·
mapbox/mapbox-maps-android の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
-
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
nightscout/AndroidAPS#5211 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
jellyfin/jellyfin-android#2231 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
commons-app/apps-android-commons#6984 ·
メンテナーはふだん 2 日以内に返信