0

在我的 android 程序中,我使用两个 Calendar 实例来获取程序中的经过时间,首先我设置了一个级别的开始时间,如下所示:

level_Start_TimeCal = Calendar.getInstance();   

在我的线程中,我正在计算经过的时间,如下所示:

level_current_TimeCal = Calendar.getInstance();
gameTime = level_current_TimeCal.getTimeInMillis()- level_Start_TimeCal.getTimeInMillis();                      
dsecs = (gameTime / 1000)%60;
dminutes = (gameTime / (60 * 1000))%60;
dhours = (gameTime / (60 * 60 * 1000))%60;

最近,我来阅读以下内容:

Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已用当前日期和时间初始化

我想知道我是否走在正确的道路上?
每次线程运行时我都会创建一个对象吗?
如果是,是否有任何替代方法可以避免创建不需要的对象并计算经过的时间?最后一个问题:在某些时候,我想在我的重启方法中重置时间,我只需在我的重置方法中调用 getInstance 来重置它,如下所示:

public void restart() {
 level_Start_TimeCal = Calendar.getInstance();
}

这是重置日历的正确方法吗?

4

1 回答 1

2

计算经过时间的最佳方法是使用System.nanotime().

long start = System.nanoTime();
//do something
long end = System.nanoTime();

//to get the elapsed time, you can use the TimeUnit utility methods:
long elapsedInNanos = end - start;
long elapsedInSeconds = TimeUnit.SECONDS.convert(elapsedInNanos, TimeUnit.NANOSECONDS);

请注意,这不是访问绝对时间的有用方法。

于 2013-01-01T08:51:44.597 回答