Clean up the remaining AndroidCurrentDateProvider usages
@runningcode がすでに取り組んでいます。
2026年9月11日 から。
評価
この issue はまだ評価されていません。
説明
Follow-up to getsentry/sentry-java#6102, which deprecates AndroidCurrentDateProvider but migrates nothing. Five internal call sites still use it, each carrying a @SuppressWarnings("deprecation") that points here.
Why they should move
AndroidCurrentDateProvider.getCurrentTimeMillis() is SystemClock.uptimeMillis(), which stops advancing while the device is in deep sleep. Any interval measured with it under-reports real elapsed time, so a window looks un-expired long after it actually expired. MonotonicTicker is CLOCK_BOOTTIME via SystemClock.elapsedRealtimeNanos() and keeps counting through deep sleep.
Call sites
Debouncer — internal/util/Debouncer.java reads the provider for its window check. Four constructions pass the uptime provider:
ViewHierarchyEventProcessor(2 s window)ScreenshotEventProcessor(2 s window)SystemEventsBreadcrumbsIntegration(60 s window)AppComponentsBreadcrumbsIntegration(60 s window)
The two 60 s breadcrumb debouncers are the ones that can swallow a real breadcrumb: a trim-memory or connectivity event right after a long Doze can land inside a window that expired hours ago in wall time. The 2 s screenshot and view-hierarchy windows are much harder to hit. Note this is a behavior change, not a rename — the debounce interval starts counting deep sleep.
AndroidEnvelopeCache — currentDateProvider.getCurrentTimeMillis() - sdkInitTimeSpan.getStartUptimeMs(), the startup-crash detection threshold. Same deep-sleep skew: a crash long after init, with sleep in between, can fall under startupCrashDurationThresholdMillis and be written as a startup crash.
AndroidEnvelopeCache cannot move in isolation
TimeSpan is documented and implemented on SystemClock.uptimeMillis() (performance/TimeSpan.java:14, :45, :51). Moving only the left operand to a MonotonicTicker tick would subtract two different clock bases — worse than what is there today. Either move TimeSpan's base along with it, or split this call site into its own issue.
Out of scope
sentry-android-replay'sICurrentDateProviderconsumers — getsentry/sentry-java#5578 / PR #6090.- Deleting
AndroidCurrentDateProvider. The class is@ApiStatus.Internaland absent fromsentry-android-core.api, so removal is not a binary-compat break, but per the project plan removal lands on v9.
Done when
- No production code references
AndroidCurrentDateProvider, or the only remaining reference isAndroidEnvelopeCachewith theTimeSpancoupling tracked separately. - Every
@SuppressWarnings("deprecation")added by getsentry/sentry-java#6102, and its comment, is gone. - Tests cover a deep-sleep-style jump: real time advances well past the window while the old uptime source would not have.
- 主要言語
- Kotlin
- スター
- 1.4k
- フォーク
- 478
- 平均マージ
- 3日 2時間
- マージ済み PR(30日)
- 70
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
getsentry/sentry-java のほかの issue
-
Improvement Java Platform: Java
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
getsentry/sentry-java#6145 · コメント 1 件 ·
-
Bug Java Platform: Java
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
getsentry/sentry-java#6138 · コメント 1 件 ·
-
Feature Java Platform: Java Spans
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
getsentry/sentry-java#5984 · コメント 1 件 ·
-
Android Task Traces
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
getsentry/sentry-java#5376 · コメント 1 件 ·
-
Android Docs Errors
難易度 2/5 1〜3時間 初心者へのやさしさ 64/100
getsentry/sentry-java#5375 · コメント 1 件 ·
getsentry/sentry-java の issue をすべて見る
似ている issue
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
libre-tube/LibreTube#8803 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
Telegram !!! オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
Xposed-Modules-Repo/com.fuck.iab#24 · コメント 3 件 · リアクション 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
SimonHalvdansson/Harmonic-HN#361 ·