android concat字符串OutOfMemoryError

时间:2014-06-05 07:26:12

标签: android string stringbuffer

我正在使用http请求lib来获取xml内容。 lib的监听器具有以下功能:

void onDataReceived(char[] data)
{

}

void onRequestSucceeded()
{

}

在请求URL之后,lib将接收多个数据,当接收到每个数据时,将调用onDataReceived函数,并且这个数据将作为参数传入,并且我必须将所有部分连成一个字符串。请求完成后,将调用onRequestSucceeded函数,字符串现在是xml的完整内容。

我这样做:

//init the result string
String resStr = new String("");

void onDataReceived(char[] data)
{
    resStr += new String(data);
}

void onRequestSucceeded()
{
    //now the resStr is ready for parse.
}

问题是,有时候我的android设备会在查询字符串时报告OutOfMemoryError。所以我改成了StringBuffer:

//init the result string
StringBuffer resStr = new StringBuffer("");

void onDataReceived(char[] data)
{
    resStr.append(data);
}

void onRequestSucceeded()
{
    //now the resStr is ready for parse.
}

但resStr.toString()给了我奇怪的内容,比如“@bsdawevas”。我怀疑编码有问题,但我不知道如何解决。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

尝试resStr.append(new String(data));

答案 1 :(得分:0)

使用

String str = resStr.toString();
System.out.println(str);

toString()将从StringBuffer转换为String对象