2

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

1) java.util.日历

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

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

2) android.text.format.Time

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

这可以在每次调用它时无需实例化任何新对象来完成,但 setToNow() 似乎只能精确到最接近的秒数。

如何获得当前系统时间,精确到毫秒,而不在 Draw 循环中产生垃圾收集?

4

1 回答 1

2

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

public interface Clock {
    long currentTimeMillis();
}

然后你可以有一个SystemClock实现 - 和一个用于测试目的的假实现。如果您不对此代码进行单元测试,那么它就不那么重要了。

另请注意,如果您尝试测量经过的时间,则应该考虑使用System.nanoTime()

于 2013-09-10T18:33:40.783 回答