Android4.4 Keyguard

这阵子由于 Android KK开机按power键不能灭屏,须过会儿才能灭屏 问题看了下KK Keyguard代码,KK版本的Keyguard已独立为一个Keyguard.apk,具体流程分析,早就有大神BLOG;

http://blog.csdn.net/aaa2832/article/details/22181505  流程分析得很详细,准确,清晰;

http://blog.csdn.net/zhubin215130/article/details/26371531 对上面BLOG的补充和整个Keyguard类之间的关系;

http://my.oschina.net/u/1420982/blog/266815  详细分析如何布局Keyguard中的view

学到的东西:

1,开始接触Policy,以前总是觉得为什么要有这个?虽然现在也不是很理解;

2,PWM由WMS派生,处理phone顶层逻辑,像横竖屏,Status Bar、Navigation Bar,特殊按键事件的拦截和分发(interceptKeyBeforeDispatching()和interceptKeyBeforeQueueing()),锁屏时间等;

3,由KeyguardService.java服务类作为模块入口,服务类通过实例化了一个IKeyguardService.Stub供其他类bindservice时调用,也不用做任何处理,交由后面的Keyguard核心类处理;

4,以上都是为系统调用,每一个模块都要对外留接口,KeyguardManager.java(/frameworks/base/core/java/android/app/KeyguardManager.java)就是Keyguard对外的接口,由源码注释可知第三方应用可以调用此类lock and unlock,对外的方法为disableKeyguard()和reenableKeyguard();

1 /**
2  * Class that can be used to lock and unlock the keyboard. Get an instance of this 
3  * class by calling {@link android.content.Context#getSystemService(java.lang.String)}
4  * with argument {@link android.content.Context#KEYGUARD_SERVICE}. The
5  * actual class to control the keyboard locking is
6  * {@link android.app.KeyguardManager.KeyguardLock}.
7  */

5,Keyguard模块逻辑助理类主要为KeyguardViewMediator.java,KeyguardViewManager.java和KeyguardHostView.java,一切事务处理都要经过这些类的调度,处理,显示;

 

posted on 2014-11-12 15:40  地方v大  阅读(930)  评论(0编辑  收藏  举报

导航