首页 > 代码库 > Keyguard分析

Keyguard分析

    从Android 6.0开始,位于frameworks/bases/packages/Keyguard的Keyguard开始被编译为一个jar包,被SystemUI静态导入,相当于SystemUI的一个界面。

       Keyguard分为两个界面,不用输入密码的一级锁屏界面(SystemUI认为是PhoneStatusBar)与相应源码文件包含Security字样的二级锁屏界面(SystemUI认为是Bouncer)。

       各个部件调用关系是下边这张图

  技术分享

可以看到,Keyguard第一个涉及到的是KeyguardDisplayManager,其由KeyguardViewMediator调用。

KeyguardViewMediator是SystemUIApplication名为SERVICES数组里的一员,这个数组的东西都是SystemUI要load的Service的class,在bootcompleted的时候启动这些服务。

 1  /**
 2 44     * The classes of the stuff to start.
 3 45     */
 4 46    private final Class<?>[] SERVICES = new Class[] {
 5 47            com.android.systemui.tuner.TunerService.class,
 6 48            com.android.systemui.keyguard.KeyguardViewMediator.class,
 7 49            com.android.systemui.recents.Recents.class,
 8 50            com.android.systemui.volume.VolumeUI.class,
 9 51            Divider.class,
10 52            com.android.systemui.statusbar.SystemBars.class,
11 53            com.android.systemui.usb.StorageNotification.class,
12 54            com.android.systemui.power.PowerUI.class,
13 55            com.android.systemui.media.RingtonePlayer.class,
14 56            com.android.systemui.keyboard.KeyboardUI.class,
15 57            com.android.systemui.tv.pip.PipUI.class,
16 58            com.android.systemui.shortcut.ShortcutKeyDispatcher.class,
17 59            com.android.systemui.VendorServices.class
18 60    };

 

Keyguard分析