计算耗尽时间

时间:2012-02-26 18:37:00

标签: android time

在我的Android应用程序中,我使用了follow功能。但我发现当time大于16777215(0xFFFFFF)时,计算需要花费很多时间,并且每2秒递增一次而不是1。

有没有办法优化下面的代码,以便及时处理大于0xFFFFFF的数字?

/**
 * Sets the time wheels to the right time.
 * @param time in seconds
 * @param animation for enableing and disabling animation
 */
private void setTime(float time, boolean animation) {        
    int days;
    int hours;
    int mins;
    int secs;

    days = (int) (time / (3600*24));
    hours = (int)(time / 3600);
    time = time % 3600;
    mins = (int) (time / 60);
    time = time % 60;
    secs = (int) time;

    if(days >= 1){
        getWheel(R.id.time4).setCurrentItem(days, animation);
    } else {
        getWheel(R.id.time4).setCurrentItem(0, animation);
    }

    if(hours >= 1){
        getWheel(R.id.time3).setCurrentItem(hours, animation);
    } else {
        getWheel(R.id.time3).setCurrentItem(0, animation);
    }

    if(mins >= 1){
        getWheel(R.id.time2).setCurrentItem(mins, animation);
    } else {
        getWheel(R.id.time2).setCurrentItem(0, animation);
    }

    if(secs >= 1){
        getWheel(R.id.time1).setCurrentItem(secs, animation);
    } else {
        getWheel(R.id.time1).setCurrentItem(0, animation);
    }
}

2 个答案:

答案 0 :(得分:1)

http://developer.android.com/reference/android/text/format/Time.html 一个Time对象可能会成功吗?

您可能超过float数据类型,在这种情况下您应该使用long

http://developer.android.com/reference/java/sql/Time.html#Time%28long%29构造函数正在使用long

答案 1 :(得分:1)

尝试使用double或long而不是float来加速计算。

如果你将日,小时,分钟和秒变量保持为与时间相同的类型,你也可以摆脱演员表。