在我的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();
}
这是重置日历的正确方法吗?
答案 0 :(得分: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);
请注意,访问绝对时间不是一种有用的方法。