studio fromhtml android html string decode html-entities

android - fromhtml - html format textview



¿Hay una forma más rápida de decodificar caracteres html en una cadena que Html.fromHtml()? (6)

Estoy usando Html.fromHtml (STRING) .toString () para convertir una cadena que puede o no tener entidades html y / o html, a una cadena de texto sin formato.

Esto es bastante lento, creo que mi último cálculo fue que tomó alrededor de 22 ms en promedio. Con un lote grande de estos puede agregar más de un minuto. Así que estoy buscando una opción más rápida, de rendimiento construido.

¿Hay alguna forma de acelerar esto o hay otras opciones de decodificación disponibles?

Edición: dado que no parece haber un método incorporado que sea más rápido o específicamente diseñado específicamente para el rendimiento, recompensaré la recompensa a cualquiera que pueda indicarme la dirección de una biblioteca que:

  • Funciona bien con Android
  • Licencia para uso libre
  • Más rápido que Html.fromHtml(String).toString();

Como nota, ya probé Jsoup con este método: Jsoup.parse(String).text() y fue más lento.


Con un gran lote de estos puede agregar más de un minuto.

Cualquier análisis llevará algún tiempo. 22ms me parece rápido. De todos modos, ¿puedes hacerlo en segundo plano? ¿Te puede ayudar algún tipo de caché?



¿Qué hay de unescapeHtml() org.apache.commons.lang.StringEscapeUtils? La biblioteca está disponible en Apache sitio de Apache .



Esta es una opción increíblemente rápida y simple: Unbescape

Mejoró enormemente nuestro rendimiento de análisis, que requiere que cada cadena se ejecute a través de un decodificador.


fromHtml() no tiene un analizador HTML de alto rendimiento, y no tengo idea de lo rápida que es la implementación toString() en SpannedString . Dudo que ninguno haya sido diseñado para su escenario.

Idealmente, las cuerdas están limpias antes de llegar a un teléfono de bajo consumo. Puede limpiarlos en el proceso de compilación (para recursos / activos), o limpiarlos en un servidor (antes de descargarlos).

Si, por el motivo que sea, es absolutamente necesario que los limpie en el dispositivo, quizás pueda usar el NDK para crear una biblioteca C / C ++ que haga la limpieza por usted más rápido.