Подсветка кода на android. Мой опыт
4 min
Tutorial

Во время разработки моего последнего приложения мне пришлось провести довольно много времени, экспериментируя с разными подходами к размещению span'ов в EditText. В этом посте хотелось бы подвести некоторый итог этого времяпрепровождения, а также сэкономить время тем, кто в будущем будет решать подобные задачи.
Кода будет немного, только основные моменты.
Для начала хочу привести небольшой список фактов для того, чтобы ввести читателя в курс дела:
- Несмотря на N ядер (каждое с огромной частотой), современный смартфоны все еще очень сильно уступают в производительности даже недорогим, но большим компьютерам.
- Каждое приложении в андроиде имеет строго ограниченный размер выделяемой памяти. И он не велик.
- Метод setSpan работает медленно.
- Чем больше работы вы вынесете в Worker'ы, тем отзывчивее будет ваше приложение.
- Держать подсвеченным весь текст не получится — только видимую его часть.
- Довольно очевидно, но все же: поиск места размещения спана в UI потоке делать не получится.










Иногда, бывает, натыкаешься на какой-то баг впервые, списываешь все на обстоятельства и забываешь о нем. Затем он повторяется снова и снова, вынуждая тебя приступить к поиску проблем и, по возможности, их устранению. И вот когда ты обнаруживаешь себя в глубокой ночи за анализом дампом/дебагом/чтением_мануалов, то становится понятно, дело на полпути бросать уже нельзя и дело принципа — довести его до конца.
