在Android绘制循环中以正确的方式查找当前时间(以毫秒为单位)

时间:2013-09-10 18:22:56

标签: java android time

我试图在我的Android应用程序的Draw()循环中尽可能多地删除对象,以最大限度地减少垃圾收集,而且我在处理时间方面遇到了麻烦。我知道有两种方法可以获得当前时间:

1)java.util.Calendar

long now = Calendar.getInstance().getTimeInMillis();

这很好,但是(据我所知)将Calendar对象设置为当前时间的唯一方法是调用Calendar.getInstance(),并且每次调用getInstance()都会创建一个新的INT []。

2)android.text.format.Time

Time time = new Time();
time.setToNow();
long now = time.toMillis(true);

这可以在每次调用时都不实例化任何新对象,但setToNow()似乎只能精确到最接近的秒。

如何在不使用Draw循环中产生垃圾回收的情况下,将当前系统时间调到最近的毫秒?

1 个答案:

答案 0 :(得分:2)

我怀疑你只是在寻找System.currentTimeMillis()。我个人会将这个静态依赖项提取到Clock接口,但是:

public interface Clock {
    long currentTimeMillis();
}

然后你可以有SystemClock实现 - 以及用于测试目的的虚假实现。如果您没有对此代码进行单元测试,则不太重要。

另请注意,如果您尝试衡量已用时间,则应考虑使用System.nanoTime()代替。