Android - 使用Strings频繁更新

时间:2013-09-18 10:58:31

标签: android string

我有一个服务,每几百毫秒发送一次更新。我有一个String,每次都会创建一个事件描述(“经过的时间是32秒”)。不幸的是,我不能只使用整数,因为内容可能会根据事件而改变(通常情况下它是相同的事件类型),并且反馈将返回给用户。有没有办法可以静态地重用相同的String,这样每分钟就不会有100个字符串分配?即使我重复使用相同的变量,即:

mEventUpdate = "Time elapsed is " + time + " seconds"; 

我仍然看到很多字符串分配。

5 个答案:

答案 0 :(得分:2)

至少可以使用String.format()来减少创建对象的数量:

mEventUpdate = String.format("Time elapsed is %d seconds", time); 

答案 1 :(得分:1)

Java中的String是一个不可变的对象。创建后,您无法再进行更改。因此,如果真的必须是String,则无法避免分配。

答案 2 :(得分:1)

使用StringBuffer

  

如果你有一个方法返回一个字符串,你知道它的结果   无论如何总是会附加到StringBuffer,改变你的   签名和实现,以便函数执行追加   直接而不是创建一个短暂的临时对象。

http://developer.android.com/training/articles/perf-tips.html#ObjectCreation

答案 3 :(得分:1)

我不会打扰一个很长的答案,要么像某人说的那样使用格式,要么使用经常被忽略的StringBuffer - 我在将大量String连接在一起时使用,比如循环,哪里使用格式是不可能的。

http://developer.android.com/reference/java/lang/StringBuffer.html

(我喜欢Android的参考资料,因为它看起来与令人讨厌的甲骨文令人讨厌的那个相比:P)

答案 4 :(得分:1)

将此声明为全局静态变量

public static StringBuilder mEventUpdate = new StringBuilder();

mEventUpdate.delete(0, buffer.length());
mEventUpdate.append("Time elapsed is ");
mEventUpdate.append(time);
mEventUpdate.append(" seconds");

// TO desplay

mEventUpdate.toString();