Почему клавиатура на iPhone долго открывается
Сторонняя клавиатура выгружается из памяти сразу, как уходит с экрана, поэтому каждое новое открытие ближе к холодному запуску приложения, чем к переключению между уже запущенными. Что растягивает эту паузу и что с ней делать.
Вы нажимаете на кнопку с глобусом или просто открываете переписку после перерыва — и на долю секунды клавиши уже нарисованы, но не отзываются: первое нажатие не проходит, или клавиатура дорисовывается с заметным опозданием. Потом всё встаёт на место, и дальше набор идёт совершенно нормально. Именно эта картина — заминка в начале и ничего после — и есть главная подсказка. Клавиатура не тормозит. Клавиатура запускается.
Расширение клавиатуры живёт только пока оно на экране
Сторонняя клавиатура в iOS — это расширение, а не приложение. Оно существует как работающий процесс ровно столько, сколько сама клавиатура видна на экране. Как только вы её убрали, переключились на другую клавиатуру или вышли из поля ввода, система выгружает расширение полностью: ничего не остаётся ни запущенным, ни приостановленным, ни ждущим в фоне.
Это же правило — причина того, что подсветка или анимация на клавиатуре не расходуют заряд, пока телефон лежит в кармане. Оно существует не для того, чтобы мешать: у расширения клавиатуры лимит памяти заметно жёстче, чем у обычного приложения, и самый надёжный способ этот лимит соблюсти — не давать расширению задерживаться, когда оно не нужно.
Следствие простое: переход на стороннюю клавиатуру после сколько-нибудь заметного перерыва — это не переключение между двумя уже открытыми приложениями, а скорее запуск приложения с нуля. Системе нужно снова загрузить код расширения в память, прежде чем обработать первое нажатие, и вот эта загрузка и есть та самая пауза.
Почему дальше пауза не повторяется
Когда расширение загрузилось, оно продолжает работать всё время, пока клавиатура остаётся на экране. Поэтому каждое следующее нажатие обрабатывается сразу: никакой платы за букву нет, есть разовая плата в начале сессии. Отсюда и странное на первый взгляд поведение — та же самая клавиатура двадцать минут подряд работает мгновенно, а потом, когда вы через час достаёте телефон из кармана и открываете переписку, снова задумывается. За этот час расширение выгрузили, и оно стартует заново, а не замедляется.
Что растягивает паузу
- Своя фотография на фоне клавиатуры или крупное изображение темы: картинку нужно раскодировать до того, как клавиатура нарисует себя, и это время прибавляется прямо к запуску.
- Нехватка памяти в целом: десятки открытых приложений, тяжёлая игра, устройство постарше с меньшим объёмом оперативной памяти. Чем плотнее память занята, тем охотнее система выгружает расширения — и тем чаще вы попадаете на холодный старт.
- Первый запуск сразу после установки или обновления приложения клавиатуры обычно самый долгий: кэшировать ещё нечего.
- Переключение кнопкой с глобусом стоит столько же: клавиатура, с которой вы уходите, выгружается, а та, на которую приходите, загружается заново.
- Мало свободного места в хранилище. На почти забитом накопителе системе тяжелее и с кэшем, и с памятью, а общая отзывчивость проседает — заминка на этом фоне становится заметнее.
К чему это отношения не имеет
Сама по себе пауза не означает, что клавиатура сделана плохо: в iOS любое стороннее расширение выгружается одинаково, включая те, что кажутся быстрыми, потому что правило принадлежит системе, а не коду конкретного разработчика. К интернету это тоже не относится — набор текста, автокоррекция и визуальные эффекты работают целиком на устройстве и не ходят в сеть. И полный доступ здесь ни при чём: переключатель «Разрешить полный доступ» управляет обращением к сети и системному буферу обмена, а не тем, насколько быстро iOS поднимает расширение в память.
Что действительно помогает
- Оставьте в списке только те клавиатуры, которыми вы правда пользуетесь. Загрузку это не отменит, но уменьшит число нажатий глобуса, которые приводят вас на холодную клавиатуру. Список редактируется в разделе Настройки → Основные → Клавиатура → Клавиатуры.
- Если вы ставите на фон собственную фотографию, выбирайте картинку попроще и полегче: чем меньше данных нужно раскодировать, тем раньше клавиатура успевает нарисоваться.
- Разгрузите память, когда телефон в целом подтормаживает: закройте пару тяжёлых приложений, освободите место в хранилище. Это снижает давление, из-за которого система выгружает расширения агрессивнее.
- Перезагрузите iPhone, если заминка внезапно стала длиться секунды вместо доли секунды. Разовая перезагрузка чистит накопившееся состояние — но если помогает только она и ненадолго, дело уже не в клавиатуре, а в общем состоянии устройства.
- Не пытайтесь убрать паузу совсем. Одна короткая заминка в начале набора — это часть устройства расширений в iOS, а не настройка, спрятанная где-то в глубине меню.
Когда пауза перестаёт быть нормой
Жаловаться стоит в двух случаях. Первый: заминка длится не долю секунды, а несколько секунд подряд, раз за разом. Второй: подтормаживает не первое нажатие, а каждое — буквы появляются с задержкой всё время, пока вы печатаете. Это уже другая история, не связанная с загрузкой расширения, и она обычно тянется либо за тяжёлой анимацией, либо за нехваткой памяти на устройстве. Ровная работа после первой заминки — наоборот, признак того, что всё идёт по правилам системы.
Частые вопросы
Задержка при открытии — признак плохо сделанной клавиатуры?
Сама по себе нет. Любое стороннее расширение клавиатуры в iOS выгружается из памяти, как только уходит с экрана, поэтому короткая пауза при повторном открытии возможна у всех. Претензия становится обоснованной, только если пауза длится несколько секунд или задержка появляется на каждом нажатии, а не только на первом.
Почему задержка сильнее, если телефон долго лежал без дела?
Чем дольше перерыв, тем выше вероятность, что система уже выгрузила расширение клавиатуры, чтобы освободить память под другие приложения. Тогда следующее открытие — не возврат к чему-то работающему, а полноценный запуск с нуля. Сразу после активного набора расширение обычно ещё в памяти, и паузы почти нет.
Ускорит ли загрузку включённый полный доступ?
Нет. Переключатель «Разрешить полный доступ» отвечает за обращение к сети и к системному буферу обмена. На скорость, с которой iOS загружает расширение клавиатуры в память, он никак не влияет, поэтому включать его ради быстродействия смысла нет. Если вы уже включили его ради вставки из буфера, на длительность паузы при открытии это тоже никак не сказалось — механизм загрузки расширения от этой настройки не зависит вообще.
Влияет ли на это интернет-соединение?
Нет. Раскладка, автокоррекция, подсказки и оформление работают полностью на устройстве и не требуют сетевых запросов, чтобы клавиатура появилась и начала печатать. Заминка при открытии одинакова и в метро без связи, и на быстром Wi-Fi, потому что упирается она в загрузку кода в память, а не в сеть.
Попробуйте на своей клавиатуре
Kibo — бесплатная клавиатура для iPhone с настоящим механическим звуком клавиш, набором тем и эффектами RGB-подсветки. Без аккаунта, без рекламы, и работает даже с выключенным полным доступом.