new Date()
は、OSクロックに依存するSystem.currentTimeMillis()
を使用します。ユーザーがシステムの日付と時刻を変更すると、変更される可能性があります。
あなたは、プロパティを以下のいる、System.nanoTime()
を使用する必要があります。
/**
* Returns the current value of the most precise available system
* timer, in nanoseconds.
*
* <p>This method can only be used to measure elapsed time and is
* not related to any other notion of system or wall-clock time.
* The value returned represents nanoseconds since some fixed but
* arbitrary time (perhaps in the future, so values may be
* negative). This method provides nanosecond precision, but not
* necessarily nanosecond accuracy. No guarantees are made about
* how frequently values change. Differences in successive calls
* that span greater than approximately 292 years (2<sup>63</sup>
* nanoseconds) will not accurately compute elapsed time due to
* numerical overflow.
*
* <p> For example, to measure how long some code takes to execute:
* <pre>
* long startTime = System.nanoTime();
* // ... the code being measured ...
* long estimatedTime = System.nanoTime() - startTime;
* </pre>
*
* @return The current value of the system timer, in nanoseconds.
* @since 1.5
*/
public static native long nanoTime();
これは単にシステムの日付を変更して操作することはできません。
完璧、ありがとう。 – FoppyOmega
誰かがiOS SDKの同等機能を認識していますか? – Tocco
一つの欠点は、CPUがリセットされたときにnanoTimeがリセットされることです。つまり、電話が切られた時の楕円時間を測定することはできません。 – sjkm