2013-12-11 3 views
2

Я пишу приложение, которое постоянно обновляет TextView с помощью SpannableStringBuilder, который использует тонну интервалов. Бенчмаркинг показывает, что неудивительно, что setText() и drawText() являются большими блокировками, а SpannableStringInternal.getSpans() имеет единственное высшее исключительное время процессора.Улучшения производительности SpannableStringBuilder?

Есть ли способ повторного использования одного и того же диапазона, поэтому мне не нужно забивать мою SpannableString с несколькими идентичными пролетами? Есть ли другие способы улучшить производительность SpannableString?

+1

Настоящий приемник производительности - это вызов isInstance в SpannableStringInternal.getSpans. Несмотря на то, что большинство вызовов к нему ищут объекты, он тратит массу времени на отражение там. –

ответ

3

После много экспериментов я обнаружил, что создание пользовательского представления, которое переопределяет onDraw, чтобы нарисовать собственный текст, - это абсолютно путь сюда. Невозможно предотвратить использование getSpans тонны отражения.

Смежные вопросы