欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Android Q sprd SystemUI (2) 锁屏

程序员文章站 2022-03-27 21:45:51
锁屏主要涉及到这几个函数调用:--/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java Systemui启动的服务,主要传递系统消息到view--/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java使用binder机制和系统的keyguardservice通讯,得到系统锁屏相关状态回调--/SystemUI/src/com/androi...
锁屏主要涉及到这几个函数调用:
--/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
  Systemui启动的服务,主要传递系统消息到view
--/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java
使用binder机制和系统的keyguardservice通讯,得到系统锁屏相关状态回调
--/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
锁屏view的绘制
--/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java
锁屏view,具体显示

KeyguardViewMediator初始化
在systemui启动的时候,SystemUIService会调用SystemUIApplication的startServicesIfNeeded()方法,该方法又根据config中的字符串配置,new一个KeyguardViewMediator.KeyguardViewMediator调用KeyguardViewMediator的start方法,初始化,在初始化最后,KeyguardViewMediator把自己的实例放入SystemUIApplication的hashmap mComponents中,让其他函数可以引用.
// 把statusbar和keyguard关联起来,将mViewMediatorCallback传给mStatusBarKeyguardViewManager
mStatusBarKeyguardViewManager =
SystemUIFactory.getInstance().createStatusBarKeyguardViewManager(mContext, mViewMediatorCallback, mLockPatternUtils);

KeyguardService(systemui)的启动
系统启动完成–>PhoneWindowManager.systemReady()–>KeyguardServiceDelegate.onSystemReady()

–>KeyguardService.onSystemReady()–>KeyguardService.onSystemReady()->KeyguardViewMediator.onSystemReady()

锁屏加载KeyguardBouncer过程:
(1)SystemUIApplication启动Statusbar,这里通过createAndAddWindows加载主要的界面,然后调用startKeyguard
(2)在startKeyguard中,调用KeyguardViewMediator的registerStatusbar方法,KeyguardViewMediator是整个待机解/锁屏业务的调度器,负责调度锁屏界面的相关动作及查询解锁屏状态,然后进入StatusBarKeyguardViewManager
(3)(4)StatusBarKeyguardViewManager管理KeyguardBouncer,KeyguardBouncer里面是安全锁界面,它把所有的锁封装起来,然后通过判断当前是什么锁,然后把对应的锁视图显示出来
(5)当滑动锁屏,如果用户设置了锁屏,那么就让安全锁屏界面显示出来
(6)显示锁屏界面
(7)是PhoeWindowmamanegr通过binder调用到KeyguardViewMediator

当按power键亮屏后:
隐藏notificationpanel
StatusBar–>makeExpandedInvisible()
显示锁屏界面
StatusBarKeyguardViewManager -->showBouncer()
解锁核心代码,完成解锁动作,播放声音,隐藏keyguard view
KeyguardViewMediator
mKeyguardGoingAwayRunnable.run();

本文地址:https://blog.csdn.net/weixin_36990104/article/details/108575482