2012-11-25 28 views
6

Các Android docs on uptimeMillis() nói:Làm thế nào SystemClock.uptimeMillis() có thể bao giờ?

Returns mili giây kể từ khi khởi động, không kể thời gian dành cho giấc ngủ sâu. Lưu ý: Giá trị này có thể được đặt lại đôi khi (trước khi nó sẽ quấn quanh).

Dường như các tài liệu có vẻ hơi lo lắng về việc nó bao quanh. Sau khi tất cả, phương pháp trả về một thời gian dài. Một tính toán nhanh chóng mang lại rằng nó sẽ mất khoảng 292,271,023 năm cho nó bao giờ quấn!

Vậy điều gì sẽ xảy ra với tài liệu? Có thực sự bao giờ có thể cho nó để bọc? Giá trị có thể bao bọc trước khi nó đạt đến giá trị cực đại trong một thời gian dài? Đó là những gì các tài liệu đang thực sự cố gắng để nói? Và nếu vậy, khi nào nó sẽ quấn?


[Thật khó hiểu là System.currentTimeMillis() cũng là thời gian dài biểu thị thời gian từ kỷ nguyên. Tuy nhiên, Android hoàn toàn không đề cập đến khả năng gói giá trị. Tất cả các chi tiết hơn, cho uptimeMillis bắt đầu lúc 0 ...]

+1

Là điểm ưa thích: [SystemClock.elapsedRealtimeNanos()] (http://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos%28%29) không có bất kỳ ghi chú đặc biệt nào. .. – Sam

Trả lời

5

Đây chủ yếu là phỏng đoán nhưng có vẻ hợp lý dựa trên tài liệu tôi đã tìm thấy. Nếu chúng ta xem xét native public static long uptimeMillis() trong SystemClock là phương pháp gốc, chạy trong không gian 32 bit và sau đó nó được truyền tới Java long khi bạn gọi nó thì có nghĩa là vì 2^32 mili giây rất dễ tiếp cận.

+1

Không gian 32 bit không có nghĩa là bạn không thể trả lại một khoảng thời gian dài với phạm vi lớn hơn 2^32 .. – icyerasor

Các vấn đề liên quan