解锁流程

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、通知StatusBarManager修改lock标记,

    3、发送锁屏页面消失广播(Intent.ACTION_USER_PRESENT)

6、KeyguardServiceDelegate会接收到Intent.ACTION_USER_PRESENT,到此解锁流程结束,重新进入Lock等待时期

具体流程图如下图所示:

更多相关文章

  1. android8.0通知
  2. Android(安卓)面试题总结(一)
  3. android 布局之RelativeLayout(相对布局)
  4. Android中定时器的使用(Timer)
  5. Android(安卓)AsyncLayoutInflater 源码解析
  6. Linux下android内核编译
  7. ava(Android)线程池
  8. OKHttp原理解析
  9. Android中pendingIntent与Intent的深入分析

随机推荐

  1. 内容提供者简介
  2. Mybaits的核心配置
  3. 安卓数据库案例
  4. Android 开发后台
  5. 安卓数据操作
  6. PPT插件OKplus软件和学习视频下载
  7. 消息处理
  8. 绑定服务
  9. ListView适配器 Activity案例
  10. 安卓绝对布局