我已经实现了一个经过时间的计数器,它使用TextView
来显示经过的时间,直到百分之一秒。在每次更新时,我当前的实现都会读取已用时间,分配一个格式化为用户可读的新String
,并使用此TextView
更新String
文本。
这似乎是对内存的巨大浪费,每个String
仅在一小段时间内只使用一次,然后很快就会被快速丢弃。有没有办法在不为每次新TextView
分配额外内存的情况下不断更新String
文本?
以下是我目前用于格式化文字的方法:
public static String formatTime(long time) {
int minute = (int) (time / 60000);
int second = (int) (time / 1000) % 60;
int hundredth = (int) (time / 10) % 100;
return String.format("%02d:%02d:%02d", minute, second, hundredth);
}
调用函数计算已用时间,调用此函数,然后立即调用setText(String)
上的TextView
。
答案 0 :(得分:1)
我认为你做得很好。如果你真的想避免分配字符串try StringBuffer。但是你必须放开format
api并做你想做的一切,这可能没有你想象的那么好。此外,您当前的实现使其线程安全。
答案 1 :(得分:1)
在浏览setText()方法的文档时,我注意到方法签名是..
setText(CharSequence text)
在进一步挖掘时,我发现StringBuilder还实现了CharSequence接口。
所以我想解决方案是start using StringBuilder instead of the String
对象。
我唯一关心的是String.format()方法无法再使用,所以我们必须开始使用Formatter类。
可在此处找到更多信息Formatter Class。
我希望它有所帮助...