Подтвердить что ты не робот

Есть ли более быстрый способ декодирования символов html в строке, чем Html.fromHtml()?

Я использую Html.fromHtml(STRING).toString() для преобразования строки, которая может содержать или не содержать html и/или html-объекты в ней, в текстовую строку.

Это довольно медленно, я думаю, что мой последний расчет состоял в том, что он занял около 22 мс на avg. С большой партией они могут добавить более минуты. Поэтому я ищу более быстрый, построенный по производительности вариант.

Есть ли способ ускорить это или есть другие варианты декодирования?

Изменить:. Поскольку не существует встроенного метода, который быстрее или построен специально для производительности, я вознагражу награду всем, кто может указать мне в сторону библиотеки что:

  • Хорошо работает с Android
  • Лицензия на бесплатное использование
  • Быстрее, чем Html.fromHtml(String).toString();

В качестве примечания, я уже пробовал Jsoup с помощью этого метода: Jsoup.parse(String).text() и он был медленнее.

4b9b3361

Ответ 1

Как насчет org.apache.commons.lang.StringEscapeUtils unescapeHtml(). Библиотека доступна на сайте Apache.

(РЕДАКТИРОВАТЬ: июнь 2019 г. - см. Комментарии ниже для получения обновлений о библиотеке)

Ответ 2

fromHtml() не имеет высокопроизводительного анализатора HTML, и я не знаю, насколько быстро реализована реализация toString() на SpannedString. Я сомневаюсь, что он был разработан для вашего сценария.

В идеале строки чисты, прежде чем они попадут на маломощный телефон. Либо очистите их в процессе сборки (для ресурсов/активов), либо очистите их на сервере (перед их загрузкой).

Если по какой-либо причине вам абсолютно необходимо очистить их на устройстве, вы, возможно, можете использовать NDK для создания библиотеки C/С++, которая быстрее очищает вас.

Ответ 3

Это невероятно быстрый и простой вариант: Unbescape

Это значительно улучшило нашу производительность синтаксического анализа, которая требует, чтобы каждая строка была запущена через декодер.

Ответ 5

С большой партией они могут добавить через минуту

Любой синтаксический анализ займет некоторое время. Мне кажется, что 22 мс быстро. В любом случае, можете ли вы сделать это в фоновом режиме? Может помочь вам какое-то кэширование?