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(); } } 开机锁屏的大致流程就是这样了。 (编辑:开发网_开封站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |