今天开始梳理SystemUI Keyguard源码
话不多说首先从启动流程开始:
起点是在 SystemUI/src/com/android/systemui/SystemUIService.java
onCreate() -> ((SystemUIApplication) getApplication()).startServicesIfNeeded();
启动SystemUI各个模块
SystemUI/src/com/android/systemui/SystemUIApplication.java
public void startServicesIfNeeded() {
startServicesIfNeeded(SERVICES);
}
private void startServicesIfNeeded(Class<?>[] services) {
…
startServicesIfNeeded()-> Object newService = SystemUIFactory.getInstance().createInstance(cl);
…
mServices[i].start();
…
if (mBootCompleted) {
mServices[i].onBootCompleted();
}
}
我们这里主要关注KeyguardViewMediator:
SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@Override
public void start() {
synchronized (this) {
setupLocked();
}
putComponent(Keygua