Этот вопрос волнует меня (и, возможно, многих), потому что в моем телефоне нет вращающейся части.
Мой телефон имеет Quad Core, 3 Гб оперативной памяти и так много места для хранения, все по типу SSD, с удивительной скоростью чтения / записи.
При этом Android (и KitKat, и Lollipop) требуется около 80 секунд для полной загрузки. В Ubuntu это занимает меньше времени при использовании systemd или upstart. (некоторые пользователи сообщают о времени загрузки менее 10 секунд при использовании Ubuntu с systemd и около 20 секунд при использовании Upstart со спецификациями, такими как Intel i5 и RAM объемом 8 Гб)
Итак, что заставляет Android загружаться так медленно? И есть ли что-то, как пользователь, я могу сделать, чтобы ускорить процесс загрузки?
Изменить: в соответствии с объяснением процесса загрузки ( https://android.stackexchange.com/a/29738/27870 ), похоже, что в общем процессе загрузки нет особых отличий по сравнению с обычной ОС, такой как Ubuntu. Где Android идет не так в процессе.
источник
Ответы:
Несколько лет назад я работал над оптимизацией времени загрузки Android, как разработчик Android. Очевидно, что в рамках этой работы нам сначала нужно было проанализировать, где Android тратит время во время загрузки.
Ниже приведены краткие выводы:
Используемое оборудование :
OMAP3430 Board
это как плата разработки, на которой прошит Stock Android. На фактическом коммерческом / производственном устройстве будет дополнительное специальное оборудование. Для визуализации времени загрузки мы использовали инструмент разработчика под названиемbootchart
Больше всего времени на Android тратят в следующих двух областях:
Почему? Потому что предварительная загрузка класса zygote необходима для хорошей производительности системы после загрузки. Таким образом, как только классы загружены из всех приложений, время выполнения приложения намного быстрее.
/system/app
,/system/framework
,/data/app
,/data/app-private
.Далее, есть компонент, называемый Activity Manager, который запускает различные службы, такие как служба определения местоположения, служба телефонии и т. Д., И на это уходит около 11-12 секунд .
Почему? Поскольку сканирование пакета теоретически может выполнять некоторое кэширование своих результатов после первой загрузки и может проверять наличие уязвимостей в безопасности.
Если вы сложите эти 2 раза, это будет около 35 секунд
Вы можете игнорировать эти числа в сегодняшнем дне и возрасте, но точка, которую указывают эти числа, - это то, где код Android AOSP тратит время во время загрузки. OEM-производители имеют свой собственный набор аппаратного обеспечения, который варьируется от устройства к устройству.
Конечно, есть и другие аппаратные и программные инициализации, которые Android должен выполнить после этих двух трудоемких шагов, которые могут еще больше увеличить время загрузки.
Не так много, я думаю. Сообщество разработчиков Android и OEM-производители все еще работают над ускорением времени загрузки, но, как вы можете себе представить, это не так просто, и внесение изменений для оптимизации времени загрузки может в конечном итоге привести к увеличению времени загрузки приложения во время нормальной работы, на что намекает платформа Android инженер .
источник
Андроид загружается медленно?
Мой телефон только двухъядерный с 1G RAM (Zenfone 4), и у меня никогда не было этой проблемы. Холодная загрузка через ~ 60 секунд, перезагрузка через 40 минут (CyannogenMod 12.1).
Это зависит от конфига и того, что вы считали «временем загрузки» . Мой ноутбук (i5 1st Gen, 4 ГБ оперативной памяти с вращающимся диском) считается работоспособным (завершил загрузку) примерно через 90 секунд. Конечно, я могу отложить / отключить некоторые сервисы, чтобы ускорить загрузку и запустить их вручную при необходимости. Но, с моей точки зрения, исходя из моих предпочтений, это не будет считаться полезным .
На ПК против мобильного
Есть некоторые различия, которые вы должны учитывать при сравнении ПК и мобильного Linux. от процессора до ядра . Наиболее заметные различия:
3.18.10
пока стабильное ядро работает4.6.2
.Итак, что заставляет Android загружаться так медленно?
Почему бы нам не проверить? :)
Если у вас есть доступ к adb и вы уже включили параметры разработчика , проверьте журнал загрузки, используя
на моем устройстве это вывод:
Как видите, общее время загрузки от запуска виртуальной машины до начального рисования экрана диспетчером окон составляет ~ 40 секунд. Дополнительное время на прошивку и пространство ядра (в вашем связанном ответе это переводится на шаг 1-4) не включено.
Обратите внимание, что для обработки apk (
boot_progress_pms_*
) всей системы требуется ~ 18 секунд , что означает ~ 45% времени загрузки, которое включает в себя:Таким образом, общее время загрузки зависит от количества пакетов (приложений), установленных на устройстве. Больше приложения означает больше времени ожидания во время процесса pms. Кроме того, запуск действий занимает ~ 5 секунд / 20% времени загрузки. Остальное не может быть ни значительным, ни безопасно изменяемым без глубокого знания поведения системы.
Что я могу сделать, чтобы ускорить процесс загрузки?
По улучшению времени загрузки
На мой взгляд, настройка времени загрузки является ненужной и обеспечивает незначительный выигрыш. Поскольку теоретически ваш телефон будет работать в течение большей части времени; гораздо важнее поддерживать стабильность системы (с учетом более длительного процесса загрузки), чтобы обеспечить более длительное время безотказной работы и меньше ошибок.
источник
adb logcat -d -b events -v threadtime | grep "boot"
возвращается пустым. Я проверил при перезагрузке, и до сих пор нет журналов в соответствииboot
.adb logcat -d -b events -v threadtime | less
. Или измените кольцевой буферЧто бы это ни стоило, я запускаю Android-x86 на виртуальной машине под Linux, и она загружается примерно за 22 секунды, что соответствует большинству дистрибутивов GNU / Linux и Windows 10 на SSD-диске с четырехъядерным настольным ЦП.
Поэтому я не считаю время загрузки Android слишком медленным.
источник