Esta pergunta é preocupante para mim (e talvez muitas por aí), porque não há parte giratória no meu telefone.
Meu telefone possui um Quad Core, 3 GB de RAM e muito espaço de armazenamento, todo tipo SSD, com incríveis velocidades de leitura / gravação.
Com tudo isso, o Android (KitKat e Lollipop) leva cerca de 80 segundos para inicializar. Demora muito menos no Ubuntu usando systemd ou upstart. (alguns usuários relatam menos de 10 segundos de tempo de inicialização usando o Ubuntu com systemd e cerca de 20 segundos ao usar o Upstart, com especificações como Intel i5 e RAM de 8 Gig)
Então, o que torna a inicialização do Android tão lenta? E, como usuário, posso fazer algo para acelerar o processo de inicialização?
Edit: de acordo com o processo de inicialização explicado ( https://android.stackexchange.com/a/29738/27870 ), não parece haver muitas diferenças no processo geral de inicialização em comparação com o sistema operacional convencional como o Ubuntu. Onde o Android dá errado no processo.
fonte
Respostas:
Alguns anos atrás, trabalhei na otimização do tempo de inicialização do Android, como desenvolvedor do Android. Obviamente, como parte deste trabalho, primeiro precisamos analisar onde o Android gasta tempo durante a inicialização.
Abaixo estão as breves descobertas:
Hardware usado :
OMAP3430 Board
que é como uma placa de desenvolvimento na qual o Stock Android é exibido. No dispositivo comercial / de produção real, haverá hardware específico adicional. Para visualizar o tempo de inicialização, usamos uma ferramenta de desenvolvedor chamadabootchart
A maior parte do tempo gasto pelo Android ocorre nas seguintes 2 áreas:
Por quê? Porque o pré-carregamento da classe zygote é essencial para o bom desempenho do sistema após a inicialização. Assim, quando as classes são carregadas de todos os aplicativos, o tempo de execução do aplicativo é muito mais rápido.
/system/app
,/system/framework
,/data/app
,/data/app-private
.Em seguida, existe um componente chamado Activity Manager que inicia serviços diferentes, como serviço de localização, serviço de telefonia etc. E leva cerca de 11 a 12 segundos para concluir isso.
Por quê? Porque, em princípio, a verificação de pacotes pode armazenar em cache alguns de seus resultados após a primeira inicialização e verificar se há vulnerabilidades de segurança.
Se você somar essas duas vezes, são cerca de 35 segundos
Você pode ignorar esses números no dia e na idade de hoje, mas o ponto que esses números indicam é onde o código AOSP do Android gasta tempo durante a inicialização. Os OEMs têm seu próprio conjunto de hardware, que varia de dispositivo para dispositivo.
Obviamente, existem outras inicializações de hardware e software que o Android precisa executar após essas duas etapas demoradas, o que pode aumentar ainda mais o tempo de inicialização.
Acho que não muito. A comunidade de desenvolvedores do Android e os OEMs ainda estão trabalhando para acelerar o tempo de inicialização, mas como você pode imaginar, não é tão fácil e fazer alterações para otimizar o tempo de inicialização pode acabar causando mais tempo de carregamento do aplicativo durante operações normais, como sugerido pela estrutura do Android engenheiro .
fonte
A inicialização do Android é lenta?
Meu telefone é apenas dual core com 1G RAM (Zenfone 4) e nunca tenho esse problema. Inicialização a frio em ~ 60 segundos, reinicialize em 40-ish (CyannogenMod 12.1).
Depende da configuração e do que você considerou "tempo de inicialização" . Meu laptop (i5 de 1ª geração, 4 GB de RAM com disco giratório) é considerado utilizável (inicialização concluída) após cerca de 90 segundos. Claro que posso atrasar / desativar alguns dos serviços para obter um tempo de inicialização mais rápido e iniciá-los manualmente, conforme necessário. Mas, no meu ponto de vista, com base na minha preferência, isso não será considerado útil .
No PC vs Celular
Há algumas diferenças que você deve considerar ao comparar entre pc e mobile linux. da CPU até o kernel . Diferenças mais notáveis:
3.18.10
enquanto o kernel estável está atualmente em4.6.2
.Então, o que torna a inicialização do Android tão lenta?
Por que não checamos? :)
Se você tiver acesso ao adb e já ativar as Opções do desenvolvedor , verifique o log de inicialização usando
no meu dispositivo, esta é a saída:
Como você pode ver, o tempo total de inicialização do início da VM até o desenho inicial da tela pelo gerenciador de janelas é de aproximadamente 40 segundos. Tempo adicional no firmware e no espaço do kernel (no seu link associado, isso traduz para as etapas de 1 a 4) não está incluído.
Observe que são necessários ~ 18 segundos para processar o apk do sistema inteiro (
boot_progress_pms_*
), que se traduz em ~ 45% do tempo de inicialização, o que inclui:Portanto, geralmente, o tempo total de inicialização depende do número de pacotes (aplicativos) instalados no dispositivo. Mais aplicativo significa mais espera durante o processo de mensagens. Além disso, as atividades iniciais levam aproximadamente 5 segundos / 20% do tempo de inicialização. O resto não é significativo nem modificável com segurança sem um conhecimento profundo dos comportamentos do sistema.
Há algo que eu possa fazer para acelerar o processo de inicialização?
Melhorando o tempo de inicialização
Na minha opinião, ajustar o tempo de inicialização é desnecessário e proporciona ganhos insignificantes. Como seu telefone, teoricamente , fica ativado a maior parte do tempo; é muito mais importante manter a estabilidade do sistema (com a troca de um processo de inicialização mais longo) para garantir maior tempo de atividade e menos erros.
fonte
adb logcat -d -b events -v threadtime | grep "boot"
retorna vazio. Eu verifiquei na reinicialização, e ainda não há registros lá correspondentesboot
.adb logcat -d -b events -v threadtime | less
. Ou tampão de anel logcat ModificarPelo que vale, eu corro o Android-x86 em uma máquina virtual no Linux e ele inicializa em cerca de 22 segundos, o que é parecido com a maioria das distribuições GNU / Linux e o Windows 10 em uma unidade SSD com uma CPU de desktop quad-core.
Portanto, não considero o tempo de inicialização do Android particularmente lento.
fonte