前几天遇到一个低概率复现锁屏界面不显示,仅仅显示状态栏的问题,跟了下锁屏界面启动显示的流程,在这分享下,也方便以后自己查看。前面简介了下Zygote启动流程, Zygote进程启动后会首先创建一个SystemServer进程,SystemServer进程在调用startOtherServices同一时候也会调用WindowManagerService的systemReady()方法
//frameworks/base/services/java/com/android/server/SystemServer.java
private void startOtherServices() {
...
wm = WindowManagerService.main(context, inputManager,
mFactoryTestMode != FactoryTest.FACTORY_TEST_LOW_LEVEL,
!mFirstBoot, mOnlyCore);
...
try {
wm.systemReady();
Slog.i("jason1

本文详细分析了Android 7.1.1系统中锁屏界面从启动到显示的过程,涉及Zygote、SystemServer、WindowManagerService、PhoneWindowManager以及KeyguardService的相关调用链。从systemReady到systemBooted,再到KeyguardServiceDelegate的bindService,最终通过KeyguardViewMediator和KeyguardSecurityContainer显示锁屏界面。锁屏显示的决定因素包括第三方锁屏、屏幕状态、解锁状态等。
订阅专栏 解锁全文
412

被折叠的 条评论
为什么被折叠?



