首页 >> 大全

Android O(8.0) Keyguard解锁流程

2023-09-30 大全 22 作者:考证青年

2019独角兽企业重金招聘工程师标准>>>

锁屏加载可能和我们想象的不一样,它是在灭屏的时候加载,这样可以确保的屏幕亮起来的时候,用户能第一时间看到锁屏界面。灭屏存在多种方式,例如按power键、屏幕超时等,这些灭屏的方式虽然不一样,但是殊途同归,我们主要分析按power键时,的加载流程。

时序图

这里写图片描述

_Android O(8.0) Keyguard解锁流程_Android O(8.0) Keyguard解锁流程

流程分析

按键事件的响应是在中,经过一系列的处理和转换最终将会传递到(PWM)的()来做具体的业务逻辑,这里我们不分析前面的过程,主要是从PWM开始分析。

的加载从()开始,依次传递,期间还经过IPC过程调用,最后传到这里。这个类是解锁屏模块的中介者,以中介的身份处理状态变化,处理event、power管理、通知等请求,并作为回调对象供解锁屏模块的其它类回调。

继续往前执行,通过跨线程调用,再调用的(),这里有一个判断,如果此时是在界面,那就会调用的()方法去暂停,而在其他不可见的界面,就不需要调用()方法,显然因为它都没显示所以不需要去Pause()。

往下又通过去调用了r.(),这里主要是去更新指纹解锁的状态,因为灭屏了如果有指纹的话就可以开始监听指纹解锁,就是在这里去开始监听;值得一提的是,现如今的人脸解锁也是在这个地方去更新状态,所不同的是,人脸需要亮屏才开始监听。

继续往前执行,接下来就要处理绘制的逻辑了,这部分主要是在中,首先会调用er去更新当前的视图,这个方法只要是手机屏幕视图改变就会被调用,所以在绘制完成后,还会调用一次。接着调用reset()去重置view的状态,然后调用d()方法去显示 还是,在灭屏的情况下,再次亮屏看到的一般是 ,就是有消息通知、时间之类的那个view,上滑才会显示密码解锁界面,也就是。接着就会调用(),当然由于还没有绘制内容,所以会进行的绘制。这里会调用()去隐藏已有的,因为下次亮屏的时候可能不是原来的锁屏方式。例如原来是PIN解锁,而我们在去重置了锁屏为,那下次亮屏就应该显示的view。

接下来就要绘制新的了,调用(),往下执行到ainer的(),这里会根据当前的设置的安全模式,也就是锁屏方式,去获取相应的,这里我们不研究各种锁屏方式的view具体怎么绘制,只关心 view的绘制,所以不往下深究。在获取到新的之后,调用()方法,然后绘制到上。

这里写图片描述

从时序图上面可以看出来,这系列操作是串行的,所以在绘制完成之后,的()会调用er的show()方法,此时就已经绘制完毕了,当然因为已经灭屏了,所以你并不能看到界面,当下次亮屏的时候,就会看到绘制好了的。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了