是否可以在不分配额外内存的情况下不断更新TextView文本?

时间:2012-02-19 04:35:12

标签: android textview

我已经实现了一个经过时间的计数器,它使用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

2 个答案:

答案 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

我希望它有所帮助...