Кейс
Почему ваше Android-приложение кажется медленным после каждого обновления
Наше собственное Android-приложение обновляется почти каждый день, и люди, которые им пользуются, стали говорить, что оно подтормаживает. Причина была не в одном тяжёлом экране, а в повторяющейся работе, в том, что телефон заново привыкает к приложению после каждого выпуска, и в демо, которое падало только на реальных телефонах.
Главное
- У медленного приложения обычно несколько небольших повторяющихся затрат, а не один тяжёлый экран, поэтому по одним описаниям жалобу трудно проследить.
- Android изучает инструкции приложения за несколько дней после каждой установки, поэтому частые обновления снова и снова возвращают приложение к медленному старту.
- Baseline profile поставляется внутри приложения, чтобы Google Play мог подготовить основные экраны при установке, и его нужно записывать заново всякий раз, когда эти экраны меняются.
- Проверки на компьютере могут проходить, тогда как реальный Android-телефон отвергает то же самое, поэтому смотрите на приложение на телефоне перед выпуском.
Наше собственное Android-приложение обновляется почти каждый день, и люди, которые им пользуются, начали говорить, что оно подтормаживает: экран отвечает не сразу, список спотыкается при прокрутке, первые секунды после открытия тяжёлые. Они написали об этом 23 октября 2026 года, мы нашли причины и на следующий день переделали повторяющиеся части, а 25 октября, когда экраны изменились, обновили ещё один фрагмент. Ничего нигде не было сломано — именно поэтому было трудно указать пальцем на причину.
Медленное приложение обходится бизнесу дорого, даже когда ничего не сломано
Люди редко сообщают о подтормаживании; они просто реже открывают приложение, отвечают позже и в конце концов перестают им пользоваться. Каждая задержка ещё и читается как медлительность бизнеса, который стоит за приложением, какой бы ни была причина. В нашем приложении не было ни тяжёлого экрана, ни неисправности, на которую можно указать, поэтому жалобу было трудно конкретизировать.
Почему Android-приложение кажется медленным после обновления
Android-приложение работает медленно после обновления потому, что телефон не готовит инструкции приложения полностью при установке: сначала он выполняет их осторожно и за несколько дней выясняет, какие части используются. Приложение, которое обновляется почти каждый день, каждый раз возвращает телефон к этому осторожному старту, и люди не задерживаются на одной версии достаточно долго, чтобы это изучение завершилось.
Baseline profile — средство от этой половины проблемы. Это запись, сделанная один раз на тестовом телефоне, тех частей приложения, которые используют основные экраны; она поставляется внутри приложения, чтобы Google Play мог подготовить их при установке обновления.
Что наш инженер нашёл на тестовом телефоне
Подтормаживание вызывал не один тяжёлый экран, а несколько небольших затрат, приходившихся на одни и те же моменты.
- Когда несколько сообщений приходили вместе, каждое запускало свою новую загрузку одних и тех же экранов, так что всплеск сообщений означал всплеск загрузок.
- Экран, запрошенный повторно, пока его первая загрузка ещё шла, отправлял второй, точно такой же запрос.
- Длинные списки строились целиком, включая строки, до которых никто не прокручивал.
- При запуске сохранённые файлы открывались и читались в той части приложения, которая рисует экран, поэтому рисованию приходилось ждать.
- Демо, которое открывается у новых посетителей, падало на первом же кадре. Три фрагмента текста в нём были написаны так, что проверки на компьютере их принимали, а Android-телефоны отвергают, поэтому все проверки проходили; это проявилось, только когда мы посмотрели на приложение на тестовом телефоне.
Что мы изменили
Мы убрали повторяющуюся работу и дали приложению карту самого себя, которая едет с ним при каждом обновлении.
- Всплеск новых сообщений теперь собирается в одну загрузку через полторы секунды после прихода последнего.
- Одинаковые запросы делят один ответ, а если за это время что-то изменилось, показывается более новый ответ.
- Длинные списки рисуют только строки на экране и добавляют остальные по мере прокрутки.
- Чтение и открытие файлов при запуске перенесены из части, которая рисует; черновик сохраняется, когда набор текста останавливается на 400 миллисекунд, а даты и числа форматируются инструментами, созданными один раз, а не для каждой строки.
- Слова каждого языка готовятся только тогда, когда этот язык используется.
- Baseline profile едет внутри каждого обновления, поэтому Google Play готовит основные экраны при его установке. Когда на следующий день мы переставили экраны, мы записали его заново, потому что карта, которая больше не совпадает с приложением, никому не помогает.
- Текст демо переписан, и одна из наших проверок теперь падает на любой формулировке, которую отверг бы Android, так что этот пробел не откроется снова незаметно.
Где мы сейчас и чего мы не утверждаем
Изменения вошли в нашу следующую версию для Android и дойдут до людей, когда эта версия появится в Google Play. На нашем тестовом телефоне приложение меньше загружает, прокручивает списки по ходу, запускается, не заставляя экран ждать сохранённые файлы, и демо снова открывается. Мы не замеряли время до и после на реальном телефоне, поэтому не утверждаем, что сэкономлены секунды. Что мы можем сказать: приложение больше не просит телефон учить его заново после каждого выпуска и больше не загружает одни и те же экраны по несколько раз.
Что вы можете проверить сами
- Спросите того, кто делает ваше Android-приложение, поставляется ли оно с baseline profile и обновляется ли эта запись, когда экраны меняются. Если этот термин вызывает недоумение, это и есть ответ.
- Пользуйтесь приложением сразу после обновления, а потом ещё раз через день и сравните. Разница в ощущениях указывает на вторую половину проблемы — повторное изучение.
- Быстро прокрутите самый длинный список в вашем приложении. Строки, которые появляются с опозданием, прыгают или оказываются пустыми по ходу, — тот самый признак, с которым мы столкнулись.
- Откройте приложение и посмотрите на первый экран несколько секунд: если он пустой, пока приложение приходит в себя, значит, работа идёт в тот момент, когда экран пытается рисовать.
- Попросите показать, как приложение работает на реальном Android-телефоне перед выпуском, а не только проверки, которые выполняются на компьютере.
Что делать дальше
Опишите закономерность тому, кто делает ваше приложение: какой экран, было ли это сразу после обновления и наладилось ли потом. Договоритесь, как будет выглядеть «лучше» до следующего выпуска — первый экран показывает содержимое, длинный список прокручивается без пустых строк, — и попросите показать вам эти моменты на телефоне. Смотреть на приложение во время его использования — на своём продукте и у клиентов, которые им пользуются, — это та работа, которую выполняют наши инженеры.
Частые вопросы
Почему моё Android-приложение кажется медленнее сразу после обновления?
Android изучает код приложения за несколько дней использования, а не сразу. В этот период приложение работает медленнее всего и налаживается по мере того, как телефон видит, какие части используются; если до этого приходит ещё одно обновление, период начинается заново. Нет одной цифры, которая подходит для каждого телефона и каждого приложения.
Что дать разработчику, который никогда не слышал о baseline profile?
Опишите им закономерность, которую вы видите, а не только термин: приложение медленнее всего сразу после обновлений и позже налаживается, а длинный список подтормаживает. Попросите проверить, поставляется ли приложение с baseline profile и, если нет, подходит ли он для этого приложения. Попросите также обновлять запись всякий раз, когда меняются основные экраны, потому что старая запись перестаёт соответствовать приложению.
Можно ли исправить медленные списки и повторные загрузки, не переделывая приложение?
В нашем случае изменения касались того, как ведёт себя само приложение, и до людей они доходят со следующей версией. Можно ли так же исправить ваше, зависит от того, что на самом деле его тормозит. Начать стоит с наблюдения за приложением на реальном телефоне, а не с догадок по жалобам.
Как понять, что моё приложение медленное на реальных телефонах, если все проверки проходят?
Проверки, которые выполняются на компьютере, не воспроизводят то, что принимает телефон во время работы приложения. В нашем приложении три фрагмента текста проходили все проверки и роняли демо на реальном телефоне. Наблюдение за приложением на телефоне перед каждым выпуском находит то, что упускают другие проверки.
Почувствуют ли люди разницу и когда?
Изменения вошли в следующую версию для Android и дойдут до людей, когда она появится в Google Play. На нашем тестовом телефоне приложение меньше загружает и прокручивает списки по ходу. Мы не замеряли время до и после на реальном телефоне, поэтому не утверждаем, насколько быстрее оно ощущается.