Холодный пуск это: Холодный запуск двигателя — что это и какие у него последствия?

Особенности холодного пуска двигателя

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

Питание двигателя состоит из: горючего (самое распространенное — бензин) и окислителя (кислород воздуха). Если того или другого слишком мало (или много), то сгорание будет вялым или вообще не состоится. В идеале для полного сгорания бензина его весовое соотношение с воздухом должно быть около 1:15. За этим строго следят соответствующие устройства в любой исправной паяльной лампе, бензиновой горелке, примусе, обеспечивая прозрачное, голубоватое, горячее пламя.

Карбюратор, который должен готовить бензовоздушную смесь для различных режимов работы, существенно сложнее примуса. Но одна из его задач та же — держать соотношение топлива и окислителя в «горючих» рамках.

Когда мотор уже прогрет — это просто. Куда сложнее холодный зимний пуск. Промороженный воздух в диффузорах карбюратора еще больше охлаждается, и капельки бензина, смешиваясь с этой струей, испаряются неохотно. А для вспышки нужна оптимальная смесь — жидкую каплю горючего искра не воспламенит. Дело усложняется тем, что часть паров бензина, все-таки образовавшихся при карбюрации, по пути в цилиндр вновь конденсируется, соприкасаясь с холодным коллектором, и у свечи вновь один воздух — а он, увы, не горит.

Выход из этой непростой ситуации найден давно — любой карбюратор оснащен тем или иным пусковым устройством, резко увеличивающим подачу бензина, чтобы насыщенность его паров возле свечи стала достаточной для вспышки. Простейшая «полуавтоматика» представляется многим автолюбителям мудреной — хотя на деле и изучить, и отладить ее может любой вдумчивый школьник.

Гораздо более сложная проблема возникает у многих современных зарубежных машин, на которых установлен датчик температуры, который при определенном значении заданной минимальной температуры просто не позволит запуститься вашему двигателю. Бороться с этим недугом можно разными путями, вплоть до установки в машине специальной «платы» с выводом кнопки на панель. При запуске двигателя вы нажимаете кнопку, цепь размыкается и электроника, отвечающая, в том числе за ограничение пуска двигателя, перестает работать. Двигатель завелся, вы отжимаете кнопку, и работа электроники машины вновь восстановлена.

Следующая важная система — зажигание. Так ли уж важна мощность искры между электродами, если и слабая успешно заряд поджигает! Действительно, в легких условиях (лето, исправный мотор, нормально работающий карбюратор…) сверхмощная искра и не нужна. Иное дело — условия холодного пуска!

Мощная, хлесткая искра, нагревая капельки бензина, способствует их воспламенению. А слабая на это не способна. Кроме того, важно, чтобы искра между электродами проскочила вовремя — в конце такта сжатия, перед положением поршня в верхней мертвой точке. Это — так называемое опережение зажигания или угол опережения зажигания, для каждого двигателя свой, регламентируемый.

Мощность искры часто зависит и от более простых вещей. Прежде всего — от напряжения в бортовой сети. А покуда мотор не запущен — от состояния аккумуляторной батареи.

Последовательно мы подошли к стартеру. Его задача — крутить мотор, да побыстрее, чтобы карбюратору хватало разрежения, а сжатие в цилиндрах хорошо подогревало каждый заряд. Чем медленнее проворачивается коленвал, тем сложнее пустить двигатель.

Зимой стартеру особенно нелегко и тем более, если в двигателе густое летнее масло. Его настолько трудно прокачать по системе смазки, что порой ломается масляный насос, рвется корпус фильтра. Коленвал вращается еле-еле, сжатие в цилиндрах медленное и слабое, карбюратор работает плохо. Но и это не все!

Нагрузка на стартер максимальная — и он сильно «подсаживает» батарею — настолько, что и искры может не быть. Вот почему при зимнем пуске вязкость масла часто играет «первую скрипку». Поскупились, сэкономили на смене масла — неприятности обеспечены.

А теперь перейдем от теории к практике. Как можно заключить из всего вышеописанного самое главное — это общая готовность автомобиля к морозам. «Правильное», более жидкое и потому более подходящее для зимы масло, а также хороший аккумулятор. С маслом все просто — заливайте хорошее масло в проверенных автосервисах. Минеральное или просто старое машинное масло в минус 30 наверняка замерзнет. Поэтому лучше поменять масло, предпочтительно на «синтетику».

В бачке омывателя тоже нужно иметь незамерзайку, причем качественную и не разбавленную. Вода, если вдруг у кого осталась, замерзнув, разорвет детали омывателя. К сожалению, большинство «незамерзаек» предлагаемых на авторынках замерзают уже при -15ºС. Зная этот факт проще на зиму сливать всю жидкость из омывателя и тем самым обезопасить себя от неприятностей. Согласитесь: мало кто из нас пользуется омывателем зимой.

Аккумулятор. Помочь ему пережить ночь или даже несколько дней можно, хорошо прогрев машину «перед сном» — лучше всего поездить хотя бы полчаса не используя мощные электроприборы — обогрев заднего стекла и сидений, сервоприводы, навороченную музыку. Есть еще вариант унести аккумулятор домой, в тепло. Если у вас нет теплого гаража, и стоянка предстоит долгая, скажем недельная, то снять аккумулятор все же стоит.

Даже в обычных теплых условиях в течение месяца каждый аккумулятор нуждается в зарядке, что же говорить о холодах, когда процесс разрядки идет гораздо быстрее. Не забудьте перед установкой аккумулятора, зачистить все контакты, иначе у вас автомобиль либо не станет заводиться, либо при запуске начнет «глючить» сигнализация.

В холодные утра аккумулятор перед запуском нужно прогреть, на несколько секунд включив дальний свет. Мера это довольно действенная. Совет тем, кто пользуется ручной коробкой передач: чтобы не перегружать аккумулятор — не забывайте во время пуска нажать на педаль сцепления. Нейтрального положения рычага в коробке тут мало: ведь при отпущенной педали мотору придется вращать и ведомый диск, и валы в коробке.

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

Если все же вам не удается завести своего железного коня, то в таких случаях мы вспоминаем о существовании особых устройств, носящих в народе название — «провода для прикуривания». Они предназначены для подачи большого стартового тока на клеммы разряженной аккумуляторной батареи от автомобиля-донора.

Но передать этот ток способны только провода, имеющие достаточно большое сечение. Например, чтобы обеспечить прокрутку холодного двигателя с объемом около 1,6 л, площадь поперечного сечения такого провода должна быть не меньше 16 мм?, что соответствует диаметру 4,5 мм.

Некоторые фирмы выпускают провода в резиновой изоляции, которая при отрицательных температурах дубеет и не позволяет проводам сгибаться. У лучших образцов изоляция выполнена из мягкого материала, чаще всего она силиконовая, не теряющая своих свойств на морозе.

Концы проводов обычно заделываются в мощные зажимы типа «крокодил» и отличаются цветом: как правило, плюсовой провод бывает красным, минусовой — черным. Длина проводов редко превышает 2-3 метра, поэтому ставить автомобили следует как можно ближе один к другому. И при этом учитывать расположение аккумуляторных батарей.

Хочу предостеречь: многие автомобили с достаточно сложным электронным обеспечением системы пуска — проще говоря, с компьютерами — не рекомендуется запускать таким способом. Их выпрямительные мосты и компьютеры могут при этом погибнуть. О чем в инструкциях обычно сказано достаточно определенно. Поэтому, прежде чем «прикуривать» — загляните в «мануал»!

Открыв капоты, сначала закрепите наконечник «плюсового» провода на клемме «+» страдающего автомобиля и только после этого соедините второй зажим этого же провода с клеммой «+» АКБ автомобиля-донора. Зажимы должны закрепляться плотно и надежно. После этого в такой же последовательности подключите черный провод.

Убедившись, что провода закреплены правильно и прочно, подождите пару минут и включите зажигание. Включать зажигание и запускать двигатель автомобиля-донора не следует во избежание повреждения его электронных систем. После пуска двигателя и появления признаков его устойчивой работы на оборотах холостого хода провода можно отключить: сначала «минусовой», затем «плюсовой».

Часто машина не заводится из-за плохих или грязных свечей зажигания. Их нужно проверить, очистить от нагара и при необходимости поменять.

На случай морозов в автомагазинах продается большое количество специальных присадок для топлива — например, «быстрый старт», которые заливаются в карбюратор и топливную систему для лучшего запуска двигателя.

Стартером нельзя, да и бессмысленно крутить дольше 20 секунд. Если после трех таких попыток машина не ожила — нужно подождать несколько минут, затем повторить серию. Когда не получилось запустить мотор с трех-пяти попыток и он не подает на это никаких надежд — стоит оставить машину в покое до потепления или вызвать специалиста для поиска причины саботажа техники.

В холод лучше не ставить автомобиль на ручник, чтобы не примерзли колодки. Спокойнее просто поставить машину на передаче. Владельцам дизельных автомобилей вообще не рекомендуется пользоваться машиной в серьезные холода, если она ночует на улице или в неотапливаемом гараже. Шансов на запуск дизеля при минус 30 немного.

Чтобы не копаться с замерзшими дверными замками, лучше заранее залить в «личинки» специальные «размораживалки». Поливать замок кипятком не советую — вода остынет, замерзнет, и открыть машину в следующий раз удастся уже только весной.

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

Помните: один проблемный холодный пуск двигателя в сильный мороз по степени причиненного автомобилю вреда равен 300-500 км пробега. И если поездка не срочная, то лучше ее отложить на потом.

 

LubeZone — Все о холодном пуске

16 ноября 2018

Все, что вам нужно знать о текучести масла в холодном состоянии

 

Инженеры единодушны в том, что износ двигателя, главным образом, происходит во время холодных пусков. Точное процентное соотношение зависит от различных факторов, и его трудно определить, но причины могут быть следующими…

  • Более богатая воздушно-топливная смесь при пуске смывает масло со стенок цилиндра
  • Внутри двигателя образуется конденсат, который вызывает появление ржавчины и коррозии
  • Непрогретые поршневые кольца и цилиндры не полностью герметичны и позволяют продуктам сгорания проходить сквозь кольца, загрязняя масло
  • Под действием гравитации большая часть масла стекает в поддон картера, оставляя компоненты двигателя незащищенными
  • Холодное масло имеет пониженную текучесть, и при пуске двигатель какое-то время испытывает нехватку масла

Все указанные факторы важны, но отсутствие масла из-за его низкой текучести является главным виновником износа двигателя. К счастью, с этим можно кое-что сделать.

 

«Холодный» — это не только пуск двигателя в зимний период

Для начала важно определиться с тем, что значит «холодный» пуск. Это верно, что масло становится более густым зимой при температурах ниже нуля, вызывая трудности с запуском двигателя, но двигатель считается «холодным» после того, как он остыл до температуры окружающего воздуха, как правило, это происходит за ночь. Проблема износа из-за холодного пуска характерна даже для теплого климата.

Масло внутри двигателя охлаждается за ночь. По мере охлаждения его вязкость возрастает (оно становится более густым). Когда утром приходит время заводить ваш автомобиль, более густое масло не может так же быстро проникнуть в двигатель, как это происходит при рабочей температуре. Именно в это время самые важные части двигателя могут работать с повышенным износом в условиях отсутствия смазки.

Чем холоднее становится, тем острее встает проблема, особенно, если вы используете традиционное моторное масло.

 

Воск твердеет на холоде

Традиционные смазочные материалы содержат парафины или воск, который твердеет при понижении температуры. Именно воск является причиной того, что масло становится более густым. В сравнении на видео мы охладили традиционное масло и синтетическое моторное масло AMSOIL из серии с автографами AMSOIL Signature Series 5W-30 Synthetic Motor Oil до температуры -40ºC. Традиционное масло загустело настолько, что едва могло вытекать из пробирки. Если бы это масло находилось внутри вашего двигателя холодным утром, оно могло не позволить коленчатому валу проворачиваться достаточно быстро для пуска двигателя, оставив вас без транспортного средства. Даже если бы двигатель запустился, это не означало бы конец всем трудностям. Густое холодное масло не может проходить через крошечные отверстия фильтра маслоотборного патрубка, тем самым вызывая масляный голод двигателя в течение нескольких жизненно важных моментов до того, как масло начнет прогреваться и сможет надлежащим образом распределиться по двигателю.

Кроме этого, густое масло может не пройти сквозь крошечные каналы в коленчатом вале для смазки коренных подшипников. Такие же масляные каналы в распределительном вале обеспечивают смазку верхней части двигателя. Чем дальше от маслонасоса располагаются эти масляные каналы, тем больше времени нужно маслу, чтобы добраться до этих компонентов при запуске, повышая опасность износа вашего двигателя.

Недостаточные низкотемпературные свойства смазочного материала могут также негативно влиять на системы изменения фаз газораспределения. Двигатели, оснащенные такими системами, имеют электромагнитные клапаны с крошечными отверстиями, через которые проходит масло, действуя как гидравлическая жидкость, чтобы приводить в действие компоненты системы изменения фаз газораспределения. Электромагнитный клапан автомобиля Ford®, оснащенного двигателем EcoBoost® объемом 3,5 л, показанный на рисунке выше, имеет отверстия размером 0,18 мм – это толщина двух листов бумаги. Если масло не может попасть в эти крошечные каналы, производительность системы изменения фаз газораспределения снижается и может произойти срабатывание сигнала проверки двигателя.

Способ защиты вашего двигателя

Синтетические моторные масла AMSOIL обладают улучшенными низкотемпературными свойствами по сравнению с традиционными маслами. Лежащие в их основе синтетические базовые масла не содержат воска, входящего в состав традиционных масел. Благодаря этому они имеют низкую температуру застывания и повышенную текучесть во время «холодных» пусков. Это означает, что, когда вы заводите двигатель, масло практически моментально проходит через фильтр маслоотборного патрубка и другие крошечные масляные каналы, обеспечивая двигателю защиту от износа.

Чтобы убедиться в повышенной текучести масла при запуске, посмотрите на значение температуры застывания масла (эти данные, как правило, указываются в спецификации на масло). Температура застывания – это самая низкая температура, при которой масло обладает текучестью. Чем ниже температура застывания, тем лучше текучесть в холодном состоянии и тем лучше защита от износа. Например, синтетическое моторное масло AMSOIL из серии с автографами AMSOIL Signature Series 5W-30 Synthetic Motor Oil имеет температуру застывания -58ºC.

Что такое холодный пуск? Объяснение запуска мобильного приложения

Время запуска вашего приложения является основным показателем общего качества вашего приложения; когда ваше приложение запускается медленно, пользователь может ожидать, что приложение также будет медленным или содержит ошибки. И наоборот, быстрый запуск создает впечатление, что остальная часть работы также будет гладкой. Так что такое холодный пуск? И сколько времени должен занять запуск вашего приложения? Мы рассмотрим эти вопросы в этом посте.

Содержание
  • Что такое холодный пуск?
  • Тесты запуска приложений
  • Этапы запуска холодного приложения
    • Этапы iOS
    • этапы Android
  • Уменьшение продолжительности холодного запуска

Что такое холодный пуск?

Задержка запуска вашего холодного приложения — это время между запуском пользователем приложения с нуля и моментом, когда оно отвечает и принимает сенсорные события. Это измеряется автоматически, когда вы используете Instabug App Performance Monitoring.

Поскольку бывают холодные пуски, можно сделать вывод, что есть также теплые и горячие пуски. Это три типа запуска приложений. Каждый относится к состоянию приложения в памяти пользователя. Для получения более подробной информации ознакомьтесь со статьей «Понимание времени запуска холодного, горячего и теплого приложений». Вот краткий обзор.

  • Холодный запуск происходит, когда пользователь запускает приложение либо в первый раз после загрузки, либо после закрытия приложения. Все процессы приложения создаются с нуля. Этот тип запуска является самым медленным, потому что в системе много дорогостоящей работы.
  • При горячем запуске процесс вашего приложения уже запущен в фоновом режиме, и система переводит его на передний план. Приложение и активность сохраняются в памяти. Только представление должно быть визуализировано. Это самое быстрое время запуска, потому что оно проще и менее интенсивно, чем холодный запуск.
  • Во время горячего запуска ваше приложение выполняет некоторые задачи холодного запуска, даже если процесс уже запущен в фоновом режиме. Например, это может произойти, когда пользователь выходит из вашего приложения, но запускает его снова.

Тесты запуска приложений

Руководство разработчика Android в настоящее время считает следующее время запуска максимальным для приемлемой производительности:

  • Холодный запуск должен занимать менее 5 секунд
  • 6
  • Теплые запуски должны занимать менее 2 секунд

Этапы холодного запуска приложения

Холодный запуск приложения — это многоэтапный процесс, включающий несколько этапов. Если ваш инструмент APM дает вам представление об отдельных этапах запуска вашего приложения, это облегчит отладку медленных запусков.

Точная разбивка холодного запуска приложения на этапы зависит от ОС, но вот общий обзор того, что происходит во время холодного запуска приложения: операционная система создает процесс приложения, затем объект приложения и запускает основной поток. Затем ваше приложение создает основное действие, за которым следует просмотр раздувания, компоновки и отрисовки. Если вы используете Instabug, ваши запуски Android и iOS разбиты на отдельные этапы с тенденциями производительности для каждого. Вы сможете сосредоточиться на источнике медленных запусков.

У разных разработчиков могут быть разные определения того, как должен рассчитываться запуск приложения и какие действия он должен содержать, поэтому EndAppLaunch API от Instabug позволяет настраивать окончание запуска приложения. Это определяет, когда закончился холодный запуск приложения или когда приложение действительно можно взаимодействовать. Таким образом, фактическая продолжительность запуска будет правильно оценена для вашего приложения.

Этапы запуска холодного приложения iOS

Вот разбивка этапов, отслеживаемых Instabug во время холодных запусков iOS-приложений.

  • ОС Стадия операционной системы: обычно ОС может занять около 100 миллисекунд, чтобы выполнить работу на стороне системы, чтобы инициализировать приложение.
  • didFinishLaunchingWithOptions Событие жизненного цикла приложения: этот метод вызывается, когда приложение загружается и готово к использованию. didFinishLaunchingWithOptions завершает инициализацию вашего приложения и вносит окончательные корректировки. Подробнее
  • sceneWillEnterForeground Событие жизненного цикла приложения: этот метод будет вызываться, если приложение настроено на использование сцен.
  • viewDidLoad Событие жизненного цикла представления: вызывается, когда ViewController загружается в память. Это когда выполняются ваши индивидуальные инициализации для вашего контроллера представления. Дополнительная информация
  • viewWillAppear Событие жизненного цикла представления: вызывается, когда представление ViewController собирается добавить в иерархию. Это происходит до настройки анимации. Подробнее
  • viewDidAppear Событие жизненного цикла представления: уведомляет ViewController о том, что его представление было добавлено в иерархию представлений. Дополнительная информация
  • Содержимое загружено : Использование EndAppLaunch API будет считаться окончанием запуска.

Этапы холодного запуска Android-приложения

Instabug отслеживает следующие этапы во время холодного запуска Android-приложения.

  • Application onCreate : вызывается, когда приложение запускается и система создает объект приложения. Дополнительная информация
  • Первое действие onCreate : Ваше приложение создает основное действие. Дополнительная информация
  • Первое действие onStart : этот метод вызывается при запуске действия. Дополнительная информация

Уменьшение продолжительности холодного запуска

Вот несколько советов, которые помогут ускорить запуск холодного приложения. Более полный список см. в статье Оптимизация запуска приложений: как решить проблему медленного запуска.

  • Выявление и мониторинг медленных стадий холодного запуска с помощью инструмента APM
  • Сокращение использования памяти за счет кэширования ресурсов и вычислений
  • Откладывание некритических и дорогостоящих процессов до запуска
  • Навязчивое тестирование в различных средах

Время запуска приложения | Разработчики Android

Пользователи ожидают, что приложения будут быстро реагировать и загружаться. Приложение с медленным запуском time не соответствует этим ожиданиям и может разочаровать пользователей. Этот плохой опыт может привести к тому, что пользователь плохо оценит ваше приложение в Play магазине или даже полностью отказаться от вашего приложения.

Этот документ содержит информацию, которая поможет вам оптимизировать время запуска вашего приложения. Он начинается с объяснения внутренностей процесса запуска. Далее обсуждается как профилировать производительность запуска. Наконец, он описывает некоторое общее время начала проблем и дает несколько советов по их решению.

Запуск приложения может происходить в одном из трех состояний, каждое из которых влияет на продолжительность требует, чтобы ваше приложение стало видимым для пользователя: холодный старт, теплый старт или горячий начинать. При холодном старте ваше приложение запускается с нуля. В остальных штатах системе необходимо вывести запущенное приложение из фона на передний план. Мы рекомендуется всегда выполнять оптимизацию на основе предположения о холодном запуске. Делает таким образом, также можно улучшить характеристики теплого и горячего пуска.

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

Холодный запуск

Холодный запуск означает запуск приложения с нуля: системный процесс до этого запуска не создавал процесс приложения. Холодный пуск бывает в случаях например, ваше приложение запускается впервые с момента загрузки устройства или так как система убила приложение. Этот тип старта представляет наибольшую задача с точки зрения минимизации времени запуска, потому что система и приложение больше работы, чем в других состояниях запуска.

В начале холодного пуска система выполняет три задачи. Вот эти задачи:

  1. Загрузка и запуск приложения.
  2. Отображение пустого начального окна для приложения сразу после запуска.
  3. Создайте процесс приложения.

Как только система создает процесс приложения, процесс приложения несет ответственность для следующих этапов:

  1. Создание объекта приложения.
  2. Запуск основного потока.
  3. Создание основного действия.
  4. Раздувание просмотров.
  5. Выкладка экрана.
  6. Выполнение начального розыгрыша.

После того, как процесс приложения завершил первый розыгрыш, системный процесс меняет из отображаемого в данный момент фонового окна, заменив его основным активность. На этом этапе пользователь может начать использовать приложение.

На рис. 1 показано, как процессы системы и приложений работают между собой. другой.

Рисунок 1. Визуальное представление важных частей холодный запуск приложения.

Проблемы с производительностью могут возникнуть во время создания приложения и создания активность.

Создание приложения

При запуске приложения на экране остается пустое начальное окно пока система не закончит отрисовку приложения в первый раз. В таком случае, системный процесс заменяет начальное окно для вашего приложения, позволяя пользователю начать взаимодействие с приложением.

Если вы переопределили Application.onCreate() в вашем собственном приложении система вызывает метод onCreate() на вашем объект приложения. После этого приложение запускает основной поток, также известный как пользовательский интерфейс. thread и поручает ему создание вашей основной активности.

С этого момента процессы на уровне системы и приложения продолжаются в соответствии с этапы жизненного цикла приложения.

Создание действия

После того, как процесс приложения создаст ваше действие, действие выполняет следующие операции:

  1. Инициализирует значения.
  2. Вызывает конструкторы.
  3. Вызывает метод обратного вызова, такой как Activity.onCreate() , соответствующие текущему состоянию жизненного цикла деятельности.

Как правило, при создании() метод оказывает наибольшее влияние на время загрузки, так как выполняет работу с самые высокие накладные расходы: загрузка и раздувание представлений и инициализация объектов необходимо для выполнения действия.

Теплый пуск

Теплый пуск включает в себя некоторое подмножество операций, которые иметь место при холодном пуске; в то же время, это представляет больше накладных расходов чем горячий старт. Есть много потенциальных состояний, которые можно было бы рассмотреть теплые пуски. Например:

  • Пользователь выходит из вашего приложения, но затем повторно запускает его. Процесс может иметь продолжал работать, но приложение должно воссоздать действие с нуля с помощью вызова до onCreate() .

  • Система удаляет ваше приложение из памяти, а затем пользователь повторно запускает его. процесс и активность необходимо перезапустить, но задача может принести некоторую пользу из сохраненного пакета состояния экземпляра, переданного в onCreate() .

Горячий старт

Горячий запуск вашего приложения намного проще и требует меньших затрат, чем холодный запуск. При горячем старте все, что делает система, — это доводит вашу активность до передний план. Если все действия вашего приложения все еще находятся в памяти, то приложение может избежать повторной инициализации объекта, компоновки инфляция и рендеринг.

Однако, если часть памяти была очищена в ответ на события обрезки памяти, такой как onTrimMemory() затем эти объекты необходимо будет воссоздать в ответ на событие горячего запуска.

Горячий запуск отображает то же поведение на экране, что и сценарий холодного запуска:

Системный процесс отображает пустой экран, пока приложение не завершит рендеринг активность.

Рисунок 2. На этой диаграмме показаны различные состояния запуска и их соответствующие процессы, причем каждое состояние начинается с первого кадра нарисовано.

Использование метрик для обнаружения и диагностики проблем

Чтобы правильно диагностировать время запуска, вы можете отслеживать метрики которые показывают, сколько времени требуется вашему приложению для запуска. Android предоставляет несколько способов сообщить вам о проблеме с вашим приложением. и помочь вам диагностировать его. Android Vitals может предупредить вас о том, что проблема происходит, и диагностические инструменты могут помочь вам диагностировать проблему.

Преимущества использования показателей запуска

Android использует время для начального отображения и Показатели времени до полного отображения для оптимизации холодных и горячих запусков приложений. Среда выполнения Android (ART) использует данные из этих показателей для эффективной предварительной компиляции кода для оптимизации будущие стартапы.

Более быстрый запуск приводит к более устойчивому взаимодействию пользователя с вашим приложением, что уменьшает количество случаев раннего выхода, перезапуска экземпляра или ухода от него в другое приложение.

Android Vitals

Android Vitals может помочь улучшить производительность вашего приложения, предупредив вас через Play Console, когда время запуска вашего приложения являются чрезмерными. Android Vitals считает время запуска вашего приложения чрезмерным, когда приложение:

  • Холодный запуск занимает 5 секунд или дольше.
  • Теплый запуск занимает 2 секунды или дольше.
  • Горячий запуск занимает 1,5 секунды или больше.

Android Vitals использует показатель времени до начального отображения. Для получения информации о том, как Google Play собирает Android Vitals данные см. в документации Play Console.

Время до начального отображения

Метрика времени до начального отображения (TTID) измеряет время, необходимое для приложение для создания своего первого кадра, включая инициализацию процесса (если холодный старт), создание активности (если холодный/теплый) и отображение первого кадра.

Как получить TTID

В Android 4.4 (уровень API 19) и выше logcat включает строку вывода содержащее значение с именем Displayed . Это значение представляет количество времени прошло между запуском процесса и окончанием рисования соответствующего активность на экране. Прошедшее время включает в себя следующую последовательность событий:

  • Запустить процесс.
  • Инициализировать объекты.
  • Создайте и инициализируйте действие.
  • Раздуть макет.
  • Нарисуйте свое приложение в первый раз.

Сообщенная строка журнала выглядит примерно так, как показано в следующем примере:

 ActivityManager: отображается com.android.myexample/.StartupTiming: +3s534ms
 

Если вы отслеживаете вывод logcat из командной строки или в терминале, найти прошедшее время просто. Чтобы найти прошедшее время в Android Studio, вы должны отключить фильтры в представлении logcat. Отключение фильтры необходимы, потому что системный сервер, а не само приложение, обслуживает этот журнал.

После того, как вы сделали соответствующие настройки, вы можете легко найти нужный термин, чтобы увидеть время. На рис. 2 показано, как отключить фильтры, а на втором строка вывода снизу, пример вывода logcat Отображается времени.

Рисунок 2. Отключение фильтров и поиск значения «Отображается» в logcat.

Метрика Displayed в выходных данных logcat не обязательно фиксирует количество времени до загрузки и отображения всех ресурсов: не учитывается ресурсы, на которые нет ссылок в файле макета или которые создает приложение как часть инициализации объекта. Он исключает эти ресурсы, потому что загрузка это встроенный процесс, который не блокирует начальное отображение приложения.

Иногда строка Displayed в выводе logcat содержит дополнительное поле за общее время. Например:

 ActivityManager: отображается com.android.myexample/.StartupTiming: +3 с 534 мс (всего +1 м 22 с 643 мс)
 

В этом случае первое измерение времени относится только к активности, которая была первой нарисовано. Измерение общего времени начинается при запуске процесса приложения и может включить другое действие, которое было запущено первым, но ничего не отображало для экран. общее измерение времени отображается только при наличии разница между единичным действием и общим временем запуска.

Вы также можете измерить время до начального отображения, запустив приложение с Команда диспетчера действий оболочки ADB. Вот пример:

 adb [-d|-e|-s <серийный номер>] shell am start -S -W
com.example.app/.MainActivity
-c android.intent.category.LAUNCHER
-a android.intent.action.MAIN

Метрика Displayed отображается в выходных данных logcat, как и раньше. Ваш терминал окно также должно отображать следующее:

 Запуск: намерение
Активность: com.example.app/.MainActivity
На этот раз: 2044
Общее время: 2044
Время ожидания: 2054
Полный
 

Аргументы -c и -a являются необязательными и позволяют указать <категория> и <действие>

Время до полного отображения

Метрика Время до полного отображения (TTFD) измеряет время, затраченное приложение для создания первого кадра с полным содержимым, включая содержимое загружается асинхронно после первого кадра. Как правило, это первичный список контент, загруженный из сети, как сообщает приложение.

Как получить TTFD

Вы можете использовать отчетFullyDrawn() метод измерения времени, прошедшего между запуском приложения и его завершением. отображение всех ресурсов и просмотр иерархий. Это может быть ценно в случаях где приложение выполняет ленивую загрузку. При отложенной загрузке приложение не блокирует начальный рисунок окна, но вместо этого асинхронно загружает ресурсы и обновляет иерархию представлений.

Если из-за ленивой загрузки начальный экран приложения не включает все ресурсы, вы можете рассмотреть завершенную загрузку и отображение всех ресурсов и просмотры в качестве отдельной метрики: например, ваш пользовательский интерфейс может быть полностью загружен, с нарисованный текст, но еще не отображаемые изображения, которые приложение должно получить из сеть.

Чтобы решить эту проблему, вы можете вручную вызвать reportFullyDrawn() , чтобы позволить система знает, что ваша деятельность завершена с ее ленивой загрузкой. Когда вы используете этого метода значение, которое отображает logcat, — это время, прошедшее с момента создание объекта приложения до момента вызова reportFullyDrawn() . Вот пример вывода logcat:

 system_process I/ActivityManager: полностью отрисован {package}/.MainActivity: +1s54ms
 

Вывод logcat иногда включает всего времени, как обсуждалось в Время до первоначального отображения.

Если вы обнаружите, что ваше время отображения медленнее, чем вам хотелось бы, вы можете продолжайте пытаться определить узкие места в процессе запуска.

Определение узких мест

Хорошим способом поиска узких мест является использование профилировщика ЦП Android Studio. Дополнительные сведения см. в разделе Проверка активности ЦП с помощью ЦП. Профайлер.

Вы также можете получить представление о потенциальных узких местах с помощью встроенной трассировки. внутри ваших приложений и действий onCreate() метода. Чтобы узнать о встроенных трассировка, см. документацию для Трассировка функции и обзор системной трассировки.

Помните о распространенных проблемах

В этом разделе обсуждается несколько проблем, которые часто влияют на запуск приложений производительность. Эти проблемы в основном касаются инициализации приложения и активности. объекты, а также загрузку экранов.

Инициализация тяжелого приложения

Производительность запуска может снизиться, если ваш код переопределяет Заявка объект и выполняет тяжелую работу или сложную логику при инициализации этого объекта. Ваше приложение может терять время во время запуска, если ваши подклассы приложения работают инициализации, которые еще не нужно делать. Некоторые инициализации могут быть совершенно ненужным: например, инициализация информации о состоянии для основное действие, когда приложение фактически запустилось в ответ на намерение. С намерением приложение использует только подмножество ранее инициализированного состояния. данные.

Другие проблемы во время инициализации приложения включают события сборки мусора. которые являются влиятельными или многочисленными, или дисковый ввод-вывод, происходящий одновременно с инициализации, что еще больше блокирует процесс инициализации. Вывоз мусора особенно важно учитывать среду выполнения Dalvik; Художественная среда исполнения сбор мусора одновременно, сводя к минимуму влияние этой операции.

Диагностика проблемы

Для диагностики проблемы можно использовать трассировку методов или встроенную трассировку.

Трассировка метода

Запуск CPU Profiler показывает, что callApplicationOnCreate() метод в конечном итоге вызывает ваш com.example.customApplication.onCreate метод. Если инструмент показывает, что эти методы занимают много времени, чтобы завершить выполнение, вы должны изучить больше чтобы увидеть, какая работа там происходит.

Встроенная трассировка

Используйте встроенную трассировку для расследования вероятных виновников, в том числе:

  • Исходный код вашего приложения при создании() функция.
  • Любые глобальные одноэлементные объекты, инициализируемые вашим приложением.
  • Любой дисковый ввод-вывод, десериализация или замкнутые циклы, которые могут возникать во время узкое место.
Решения проблемы

Вне зависимости от того, связана ли проблема с ненужными инициализациями или с дисковым вводом-выводом, решение — ленивая инициализация. Другими словами, вы должны только инициализировать предметы, которые необходимы немедленно. Вместо создания глобальных статических объектов перейти к одноэлементному шаблону, где приложение инициализирует объекты только первым время, когда они нужны.

Также рассмотрите возможность использования инфраструктуры внедрения зависимостей, например Рукоять, которая создает объекты и зависимости, когда они вводятся в первый раз.

Если ваше приложение использует поставщиков содержимого для инициализации компонентов приложения при запуске, вместо этого рассмотрите возможность использования библиотеки запуска приложений.

Инициализация тяжелой операции

Создание операции часто влечет за собой много работы с высокими накладными расходами. Часто бывают возможности оптимизации этой работы для достижения повышения производительности. Такой Общие проблемы включают в себя:

  • Раздувание больших или сложных макетов.
  • Блокировка рисования экрана на диске или сетевой ввод-вывод.
  • Загрузка и декодирование растровых изображений.
  • Растеризация VectorDrawable объекты.
  • Инициализация других подсистем действия.
Диагностика проблемы

В этом случае также может оказаться полезным как трассировка методов, так и встроенная трассировка.

Трассировка метода

При использовании CPU Profiler обратите внимание на Приложение конструкторы подклассов и com.example.customApplication.onCreate() метода.

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

Встроенная трассировка

Используйте встроенную трассировку для расследования вероятных виновников, включая:

  • Начальную функцию вашего приложения onCreate() .
  • Любые глобальные одноэлементные объекты, которые он инициализирует.
  • Любой дисковый ввод-вывод, десериализация или замкнутые циклы, которые могут возникать во время узкое место.
Решения проблемы

Есть много потенциальных узких мест, но две общие проблемы и решения следующие:

  • Чем больше ваша иерархия представлений, тем больше времени требуется приложению, чтобы ее раздуть. Два шага, которые вы можете предпринять для решения этой проблемы:
    • Сведение иерархии представлений за счет сокращения избыточных или вложенных макетов.
    • Не расширять части пользовательского интерфейса, которые не должны быть видны во время запуск. Вместо этого используйте ViewStub объект в качестве заполнителя для подиерархий, которые приложение может раздувать в более подходящее время.
  • Инициализация всех ваших ресурсов. в основном потоке также может замедлить запуск. Вы можете решить эту проблему следующим образом:
    • Переместите инициализацию всех ресурсов, чтобы приложение могло выполнять ее лениво другая нить.
    • Разрешить приложению загружать и отображать ваши представления, а затем обновлять визуальное представление свойства, зависящие от растровых изображений и других ресурсов.

Пользовательские экраны-заставки

Во время запуска может отображаться дополнительное время, если вы ранее использовали один из следующие методы реализации пользовательского экрана-заставки в Android 11 (API уровень 30) или ниже:

  • Использование окноDisablePreview атрибут темы, чтобы отключить начальный пустой экран, нарисованный системой во время запуска.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *