在我的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);
}
}
答案 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来加速计算。
如果你将日,小时,分钟和秒变量保持为与时间相同的类型,你也可以摆脱演员表。