2012-11-25 4 views
6

Android docs on uptimeMillis() का कहना है:SystemClock.uptimeMillis() कभी भी कैसे लपेट सकता है?

बूट के बाद रिटर्न मिलीसेकेंड, गहरी नींद में खर्च नहीं की गिनती का समय है। नोट: यह मान कभी-कभी रीसेट हो सकता है (इससे पहले कि यह अन्यथा लपेटे)।

यह बहुत अजीब लगता है कि दस्तावेज़ इस बारे में चिंतित हैं कि यह कभी भी लपेट रहा है। आखिरकार, विधि एक लंबा लौटती है। एक त्वरित गणना उपज है कि इसे कभी भी लपेटने के लिए लगभग 2 9 2,271,023 साल लगेंगे !!!

तो दस्तावेज़ों के साथ क्या चल रहा है? क्या इसे लपेटने के लिए वास्तव में संभव है? क्या इससे पहले मूल्य अधिकतम मूल्य तक पहुंचने से पहले मूल्य लपेट सकता है? क्या दस्तावेज़ वास्तव में कहने की कोशिश कर रहे हैं? और यदि हां, तो यह कब लपेटेगा?


[यह विशेष रूप से System.currentTimeMillis() के रूप में puzzling है भी एक लंबी है कि एक अवधि के बाद समय का प्रतिनिधित्व करता है। फिर भी, एंड्रॉइड मूल्य रैपिंग की संभावना का बिल्कुल उल्लेख नहीं करता है। और भी, अपटाइम मिलिज़ के लिए जो 0 से शुरू होता है ...]

+1

रुचि के बिंदु के रूप में: [SystemClock.elapsedRealtimeNanos()] (http://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos%28%29) में कोई विशेष नोट नहीं है। .. – Sam

उत्तर

5

यह मुख्य रूप से अनुमान है लेकिन मुझे मिले दस्तावेज़ों के आधार पर समझ में आता है। अगर हम native public static long uptimeMillis() में SystemClock में एक देशी विधि है, 32-बिट स्पेस में चल रहा है, और उसके बाद इसे जावा long पर डाला जा रहा है, तो इसे समझ में आता है क्योंकि यह 2^32 मिलीसेकंड बहुत आसानी से पहुंच योग्य है।

+1

32-बिट स्पेस का मतलब यह नहीं है कि आप 2^32 से अधिक की सीमा के साथ लंबे समय तक वापस नहीं लौट सकते हैं .. – icyerasor

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^