学徒浅析Android——Android 8.0 Lock解锁流程

本文详细探讨了Android 8.0的Lock解锁流程,从LockPatternChecker的验证开始,涵盖密码验证成功后的KeyguardSecurityCallback回调,KeyguardHostView的dismiss过程,KeyguardViewMediator如何管理消失流程,以及PhoneWindowManager如何处理关键标记的变更。最后,解锁流程在KeyguardServiceDelegate接收到ACTION_USER_PRESENT广播时结束。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解锁流程

1、Android8.0的Lock解锁处理统一由LockPatternChecker.checkPassword实现,LockPatternChecker.checkPassword提供了两个回调接口,其中onEarlyMatched()处理验证成功,onChecked处理验证失败。

2、密码验证成功后,立刻执行KeyguardSecurityCallback#dismiss(true)执行页面消操作,由于SecurityView是加载在KeyguardHostView上,锁屏页面持有的KeyguardSecurityCallback对象,实际是KeyguardHostView#mSecurityContainer自身.,所以最终的执行方法实际是KeyguardHostView.finish(true)。

3、KeyguardHostView在执行finish()同时,会通过KeyguardViewMediator#keyguardDone()通知KeyguardViewMediator执行消失流程。后续流程由KeyguardViewMediator统一管理。

4、KeyguardViewMediator首先运行mKeyguardGoingAwayRunnable,这个过程包括通知WindowManager修改保存的keyguard标记,通知PhoneWindowManager执行削除操作。通知StatusBar和StatusBarKeyguardManager修改保存的keyguard标记等。总之就是标记位的变换。

5、PhoneWindowManager在收到keyguard标记变化的通知后,进一步通知KeyguardViewMediator#handleStartKeyguardExitAnimation()执行最后的收尾操作,主要包括如下三个操作:

    1、通知锁屏页面执行onPaus()

    2、通知StatusBarManage

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值