我需要测量一段时间可以持续几个小时.我假设正常的做法是这样的:
Date date = new Date();
...wait some time...
(new Date()).getTime() - date.getTime())
Run Code Online (Sandbox Code Playgroud)
但是,用户可以将Android的时钟改回一小时以欺骗游戏并缩短时间吗?从在线资源中获取阅读时间是最佳解决方案吗?
Kon*_*uda 11
new Date()使用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();
Run Code Online (Sandbox Code Playgroud)
仅通过更改系统日期无法操作.
| 归档时间: |
|
| 查看次数: |
1239 次 |
| 最近记录: |