Я внедряю парсер java SAX в своем приложении для Android.
У меня все работает, но я пытаюсь оптимизировать один маленький кусочек, который потребляет намного больше памяти, которая требуется.
Это моя текущая (и довольно неэффективная, я знаю) реализация функции символа () DefaultHandler.
String currentText = "";
@Override
public void characters(char[] ch, int start, int length)
{
if(currentText.length() > 0)
{
currentText = currentText.concat(new String(ch, start, length));
}else
{
//Takes half as much memory as concating to empty string
currentText = new String(ch, start, length);
}
}
По сути, эта функция вызывается, когда SAXвстречает текст внутри элемента.Однако важно отметить, что весь текст не гарантируется для одновременного анализа, поэтому новые символы должны быть добавлены к любому тексту, находящемуся в текущий момент в currentText (обратите внимание, что currentText установлен в «» в конце каждого элемента).
Я просто скомбинировал этот код, чтобы он работал, чтобы я мог протестировать остальную часть моего анализатора, но это необходимо оптимизировать.
Любые предложения о том, как я могу реализовать это, чтобы использовать как можно меньшепамять как можно?