如何避免android中的内存不足错误

时间:2011-02-17 07:31:03

标签: android

我从webservice获取值而unescape xml值。我将它存储在stringBuffer中。我从webservice获得了很多价值。所以我出现了内存错误。谁能告诉我如何避免这种情况?

我的UnescapeXml代码:

public  String unescapeXML(String str) {
            if (str == null || str.length() == 0)
              return "";

            StringBuffer buf = new StringBuffer();
            int len = str.length();
            for (int i = 0; i < len; ++i) {
              char c = str.charAt(i);
              if (c == '&') {
                int pos = str.indexOf(";", i);
                if (pos == -1) { // Really evil
                  buf.append('&');
                } else if (str.charAt(i + 1) == '#') {
                  int val = Integer.parseInt(str.substring(i + 2, pos), 16);
                  buf.append((char) val);
                  i = pos;
                } else {
                  String substr = str.substring(i, pos + 1);
                  if (substr.equals("&amp;"))
                    buf.append('&');
                  else if (substr.equals("&lt;"))
                    buf.append('<');
                  else if (substr.equals("&gt;"))
                    buf.append('>');
                  else if (substr.equals("&quot;"))
                    buf.append('"');
                  else if (substr.equals("&apos;"))
                    buf.append('\'');
                  else if (substr.equals("&nbsp;"))
                      buf.append(" ");

                  else
                    // ????
                    buf.append(substr);
                  i = pos;
                }
              } else {
                buf.append(c);
              }
            }
            return buf.toString();
          }

由于

2 个答案:

答案 0 :(得分:1)

您应该切换到流式传输数据并将其作为自定义Stream或Reader类的一部分进行转换,而不是尝试一次读取所有内容。

答案 1 :(得分:0)

不确定这是否就是你正在做的事情,但它实际上看起来你只是用相应的字符替换html实体。 Document类中已经提供了函数。您可能正在寻找normalizeDocument()。在这种情况下,您应该使用流而不是字符串。

Document Class

相关问题