我试图在我的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循环中产生垃圾回收的情况下,将当前系统时间调到最近的毫秒?
答案 0 :(得分:2)
我怀疑你只是在寻找System.currentTimeMillis()
。我个人会将这个静态依赖项提取到Clock
接口,但是:
public interface Clock {
long currentTimeMillis();
}
然后你可以有SystemClock
实现 - 以及用于测试目的的虚假实现。如果您没有对此代码进行单元测试,则不太重要。
另请注意,如果您尝试衡量已用时间,则应考虑使用System.nanoTime()
代替。