tg-me.com/iosdev/499
Last Update:
Как улучшить отклик приложения: 10 советов от инженеров Apple
Когда приложение реагирует на жесты и касания в режиме реального времени, у пользователей создается положительное впечатление.
Приложения с зависаниями (задержками отклика) или дёрганым поведением на экране разрушают эту иллюзию.
Это заставляет пользователя задуматься, правильно ли работает приложение. Чтобы избежать зависаний и заминок, при разработке и тестировании приложения нужно учитывать следующие приблизительные пороговые значения.
100 мс — это максимальная отсечка для задержек при непосредственном взаимодействии с пользователем. Более короткая задержка редко заметна.
5 мс — это порог для достижения плавного скролла на экране.
Для непрерывного скролла новый фрейм должен быть готов каждый раз при обновлении экрана. На устройствах Apple это может происходить 120 раз в секунду, или каждые 8,3 мс. В зависимости от системных условий и задач в приложении, у вас может не быть полных 8,3 мс для подготовки следующего обновления экрана.
Вот десять советов, которые помогут избежать зависаний и сбоев в приложении, а также несколько инструментов, которые помогут вам обнаруживать и анализировать эти типы проблем с реагированием.
1️⃣ Избегайте зависаний, освобождайте основной поток от работы, не связанной с пользовательским интерфейсом.
2️⃣ Проанализируйте, какие части вашего приложения должны выполняться в основном потоке, а какие нет.
3️⃣ Избегайте слишком большого количества потоков. Dispatch и OperationQueue
поддерживают внутренний пул рабочих потоков, настроенных на емкость и нагрузку устройства. Используйте эти технологии вместо создания собственных фоновых потоков для сохранения баланса.
4️⃣ Избегайте лагов, сводя к минимуму время обновления для view.
Чтобы обеспечить плавную анимацию, которая выглядит как непрерывное движение, устройства Apple обновляют экран до 120 раз в секунду. Когда ваше приложение находится в foreground (на переднем плане, кому как привычнее), код отрисовки в основном потоке должен быть завершен до того, как потребуется следующий фрейм, чтобы избежать пропуска кадров и появления рывков.
5️⃣ Оптимизируйте свое приложение для переменной частоты обновления.
Если ваше приложение напрямую взаимодействует с графической системой, например, когда вы выполняете собственный рендеринг, помните о дисплеях с переменной частотой обновления.
6️⃣ Напишите тесты производительности, чтобы обеспечить быстрое выполнение кода, привязанного к основному потоку.
7️⃣ Ищите зависания и потенциальные риски, которые могут к этому привести.
8️⃣ Попробуйте найти сами причины зависаний. Обратите внимание на Thread State Trace instrument.
9️⃣ В целом чаще используйте Instruments для обнаружения узких мест приложения.
🔟 Уделяйте внимание метрикам и отчётам непосредственно от приложения.
@iOS Dev — делюсь советами не только для плавного скролла😅
BY iOS Dev
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Share with your friend now:
tg-me.com/iosdev/499