加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

Android开机锁屏流程详解

发布时间:2021-11-21 17:40:55 所属栏目:教程 来源:互联网
导读:Android开机锁屏流程: 首先:手机开机时,在SystemServer类的init2()方法中会启动线程类ServerThread的run方法如下: WindowManagerService wm = null; ... try { wm.systemReady(); //调用WindowManagerService的systemReady()方法。 2.WindowManagerServi

Android开机锁屏流程:
 
首先:手机开机时,在SystemServer类的init2()方法中会启动线程类ServerThread的run方法如下:
 
WindowManagerService wm = null; ...
 
try {
 
wm.systemReady(); //调用WindowManagerService的systemReady()方法。
 
2.WindowManagerService.java
 
mPolicy.systemReady(); //调用PhoneWindowManager .java中的systemReady方法。
 
phoneWindowManager.java中:
 
mKeyguardMediator.onSystemReady(); //进行待机锁屏及解锁逻辑
 
 
3. KeyguardViewMediator.java
 
中的onSystemReady()方法中:
 
doKeyguardLocked();
 
中的showLocked()方法:
 
mShowKeyguardWakeLock.acquire(); //确保屏幕处于唤醒状态
 
Message msg = mHandler.obtainMessage(SHOW);
 
mHandler.sendMessage(msg);
 
发送异步消息:
 
执行handleShow(); 方法。
 
handleShow方法中调用:
 
mKeyguardViewManager.show();
 
在这个show方法中:
 
mKeyguardView = mKeyguardViewProperties.createKeyguardView(mContext, mUpdateMonitor, this);
 
这个createKeyguardView方法是调用的LockPatternKeyguardViewProperties.java中createKeyguardView方法:
 
c reateKeyguardView方法构建一个LockPatternKeyguardView();
 
4.LockPatternKeyguardView();
 
在这个构造方法中调用了keyguardScreenCallback()方法,
 
调用updateScreen(getInitialMode(), false); //getInitialMode获取是锁屏还是解锁界面
 
假如是解锁的话调用recreateUnlockScreen()方法,
 
这个方法中 addView(mUnlockScreen);//将UnlockScreen添进LockPatternKeyguardView
 
然后调用createUnlockScreenFor()方法,
 
在这个方法中里判断解锁方式。
 
其中的这个方法initializeBiometricUnlockView(unlockView);
 
用来初始化人脸解锁,
 
以上,LockScreen或者UnlockScreen就创建出来了,当然,只是创建了相应对象,还得再显示。
 
5.再次回到KeyguardViewManager类的show方法,在执行完该方法中的 的mKeyguardView = mKeyguardViewProperties.createKeyguardView(mContext, mUpdateMonitor, this)代码流程后,接着执行mKeyguardView.show(),即调 用KeyguardViewBase的实现类LockPatternKeyguardView的show方法,如下:
 
@Override
 
public void show() {
 
// Emulate activity life-cycle for both lock and unlock screen.
 
if (mLockScreen != null) {
 
((KeyguardScreen) mLockScreen).onResume();
 
}
 
if (mUnlockScreen != null) {
 
((KeyguardScreen) mUnlockScreen).onResume();
 
}
 
 
 
if (mBiometricUnlock != null && mSuppressBiometricUnlock) {
 
mBiometricUnlock.hide();
 
}
 
}
 
开机锁屏的大致流程就是这样了。

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读