Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Clean up the remaining AndroidCurrentDateProvider usages

Đang mở
#6,104 1 bình luận 0 reaction 1 người được giao Xem trên GitHub

@runningcode đang làm issue này rồi.

Từ ngày 11/9/2026.

Đánh giá

Issue này chưa được đánh giá.

Mô tả

Platform: Java

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's ICurrentDateProvider consumers — getsentry/sentry-java#5578 / PR #6090.
  • Deleting AndroidCurrentDateProvider. The class is @ApiStatus.Internal and absent from sentry-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 is AndroidEnvelopeCache with the TimeSpan coupling 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.
Ngôn ngữ chính
Kotlin
Star
1.4k
Fork
478
Merge trung bình
2 ngày 20 giờ
Pull request đã merge (30 ngày)
71

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của getsentry/sentry-java

Tất cả issue của getsentry/sentry-java

Issue tương tự

Thêm issue về Kotlin

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.