为什么joda时间会因为记忆太多而导致时间差异

时间:2015-01-05 10:19:29

标签: android jodatime android-traceview

我有以下功能:

public static int getDiffHour(Date first) {
        int hoursBetween = Hours.hoursBetween(new LocalDate(first), new LocalDate()).getHours();
        return hoursBetween;
    }

我试图让两个日期之间的时间有所不同。

这是我的Traceview:

enter image description here

该功能正在花费大量时间和资源来执行 - 我在这里想念什么。由于此功能占用了大量CPU时间,我的服务在5.0.1上被杀死了。

编辑:

深入挖掘,我发现99%的CPU时间是由LocalDate init占用的。有没有办法可以避免这种情况并提供预先计算的日期?

编辑2:实施Joda 2.6之后:

enter image description here

1 个答案:

答案 0 :(得分:2)

这个issue可能已经使用最新的Joda-Time-release v2.6 解决了,因为类DateTimeZone的类初始化(你在那里观察了大量的时间)花费)不再调用方法setProvider0(),另请参阅此commit