图案解锁流程

调用栈log

05-17 13:45:16.111 25580 25580 E KeyguardViewMediator: tryKeyguardDone: 
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator: java.lang.Exception
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at com.android.systemui.keyguard.KeyguardViewMediator.tryKeyguardDone(KeyguardViewMediator.java:1959)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at com.android.systemui.keyguard.KeyguardViewMediator.access$1700(KeyguardViewMediator.java:185)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at com.android.systemui.keyguard.KeyguardViewMediator$3.keyguardDone(KeyguardViewMediator.java:731)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at com.android.keyguard.KeyguardHostViewController$2.finish(KeyguardHostViewController.java:146)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at com.android.keyguard.KeyguardSecurityContainerController.showNextSecurityScreenOrFinish(KeyguardSecurityContainerController.java:426)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at com.android.keyguard.KeyguardHostViewController$2.dismiss(KeyguardHostViewController.java:109)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at com.android.keyguard.KeyguardSecurityContainerController$2.dismiss(KeyguardSecurityContainerController.java:139)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at com.android.keyguard.KeyguardSecurityContainerController$2.dismiss(KeyguardSecurityContainerController.java:133)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at com.android.keyguard.KeyguardPatternViewController$UnlockPatternListener.onPatternChecked(KeyguardPatternViewController.java:173)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at com.android.keyguard.KeyguardPatternViewController$UnlockPatternListener.access$800(KeyguardPatternViewController.java:87)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at com.android.keyguard.KeyguardPatternViewController$UnlockPatternListener$1.onEarlyMatched(KeyguardPatternViewController.java:136)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at com.android.internal.widget.LockPatternChecker$2$$ExternalSyntheticLambda0.onEarlyMatched(Unknown Source:2)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at com.android.internal.widget.LockPatternUtils$WrappedCallback.lambda$onCredentialVerified$0$LockPatternUtils$WrappedCallback(LockPatternUtils.java:1323)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at com.android.internal.widget.LockPatternUtils$WrappedCallback$$ExternalSyntheticLambda0.run(Unknown Source:2)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at android.os.Handler.handleCallback(Handler.java:938)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at android.os.Handler.dispatchMessage(Handler.java:99)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at android.os.Looper.loopOnce(Looper.java:356)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at android.os.Looper.loop(Looper.java:475)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at android.app.ActivityThread.main(ActivityThread.java:7889)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at java.lang.reflect.Method.invoke(Native Method)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
05-17 13:45:16.111 25580 25580 E KeyguardViewMediator:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1009)
05-17 13:45:16.335 25580 25580 E KeyguardViewMediator: mHideAnimationFinishedRunnable#run
05-17 13:45:16.336 25580 25580 E KeyguardViewMediator: tryKeyguardDone: 
05-17 13:45:16.336 25580 25580 E KeyguardViewMediator: java.lang.Exception
05-17 13:45:16.336 25580 25580 E KeyguardViewMediator:  at com.android.systemui.keyguard.KeyguardViewMediator.tryKeyguardDone(KeyguardViewMediator.java:1959)
05-17 13:45:16.336 25580 25580 E KeyguardViewMediator:  at com.android.systemui.keyguard.KeyguardViewMediator.lambda$new$5(KeyguardViewMediator.java:2202)
05-17 13:45:16.336 25580 25580 E KeyguardViewMediator:  at com.android.systemui.keyguard.KeyguardViewMediator.$r8$lambda$UUYKe9T2h39WDF0SXTBkvczZjVw(Unknown Source:0)
05-17 13:45:16.336 25580 25580 E KeyguardViewMediator:  at com.android.systemui.keyguard.KeyguardViewMediator$$ExternalSyntheticLambda3.run(Unknown Source:2)
05-17 13:45:16.336 25580 25580 E KeyguardViewMediator:  at com.android.keyguard.KeyguardPatternView.lambda$startDisappearAnimation$1(KeyguardPatternView.java:206)
05-17 13:45:16.336 25580 25580 E KeyguardViewMediator:  at com.android.keyguard.KeyguardPatternView.$r8$lambda$Sz_3IRlQouOrbmx4V9rQ2s0DkzU(Unknown Source:0)
05-17 13:45:16.336 25580 25580 E KeyguardViewMediator:  at com.android.keyguard.KeyguardPatternView$$ExternalSyntheticLambda1.run(Unknown Source:4)
05-17 13:45:16.336 25580 25580 E KeyguardViewMediator:  at com.android.internal.widget.LockPatternView$3.onAnimationEnd(LockPatternView.java:541)
05-17 13:45:16.336 25580 25580 E KeyguardViewMediator:  at android.graphics.animation.RenderNodeAnimator.onFinished(RenderNodeAnimator.java:370)
05-17 13:45:16.336 25580 25580 E KeyguardViewMediator:  at android.graphics.animation.RenderNodeAnimator$$ExternalSyntheticLambda0.run(Unknown Source:2)
05-17 13:45:16.336 25580 25580 E KeyguardViewMediator:  at android.os.Handler.handleCallback(Handler.java:938)
05-17 13:45:16.336 25580 25580 E KeyguardViewMediator:  at android.os.Handler.dispatchMessage(Handler.java:99)
05-17 13:45:16.336 25580 25580 E KeyguardViewMediator:  at android.os.Looper.loopOnce(Looper.java:356)
05-17 13:45:16.336 25580 25580 E KeyguardViewMediator:  at android.os.Looper.loop(Looper.java:475)
05-17 13:45:16.336 25580 25580 E KeyguardViewMediator:  at android.app.ActivityThread.main(ActivityThread.java:7889)
05-17 13:45:16.336 25580 25580 E KeyguardViewMediator:  at java.lang.reflect.Method.invoke(Native Method)
05-17 13:45:16.336 25580 25580 E KeyguardViewMediator:  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
05-17 13:45:16.336 25580 25580 E KeyguardViewMediator:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1009)
@startuml
[-> LockPatternChecker.OnCheckCallback: onEarlyMatched()
LockPatternChecker.OnCheckCallback -> KeyguardPatternViewController: onPatternChecked()
KeyguardPatternViewController -> KeyguardSecurityCallback:dismiss()
KeyguardSecurityCallback ->SecurityCallback:dismiss()
SecurityCallback -> KeyguardSecurityContainerController:showNextSecurityScreenOrFinish()
KeyguardSecurityContainerController->SecurityCallback:finish()
SecurityCallback->ViewMediatorCallback:keyguardDone(strongAuth, targetUserId)
ViewMediatorCallback->KeyguardViewMediator: tryKeyguardDone()
KeyguardViewMediator->StatusBarKeyguardViewManager:startPreHideAnimation(mHideAnimationFinishedRunnable)
StatusBarKeyguardViewManager->KeyguardViewMediator:mHideAnimationFinishedRunnable.run()
KeyguardViewMediator->KeyguardViewMediator:tryKeyguardDone()
KeyguardViewMediator->KeyguardViewMediator:handleKeyguardDone()
KeyguardViewMediator->KeyguardViewMediator:handleHide()
KeyguardViewMediator->KeyguardViewMediator: mKeyguardGoingAwayRunnable.run()
note over KeyguardViewMediator : PhoneWindowManager 将会在 AppTransition 执行结束后通知 KeyguardService
KeyguardViewMediator->KeyguardViewMediator:handleStartKeyguardExitAnimation()
KeyguardViewMediator->StatusBarKeyguardViewManager:hide()
@enduml

在这里插入图片描述

packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java:134

//LockPatternChecker.OnCheckCallback
@Override
public void onEarlyMatched() {
    mLatencyTracker.onActionEnd(ACTION_CHECK_CREDENTIAL);
    onPatternChecked(userId, true /* matched */, 0 /* timeoutMs */,
            true /* isValidPattern */);
}

com.android.keyguard.KeyguardPatternViewController.UnlockPatternListener#onPatternChecked

private void onPatternChecked(int userId, boolean matched, int timeoutMs,
        boolean isValidPattern) {
    boolean dismissKeyguard = KeyguardUpdateMonitor.getCurrentUser() == userId;
    if (matched) {
        mLockPatternUtils.sanitizePassword();
        getKeyguardSecurityCallback().reportUnlockAttempt(userId, true, 0);
        if (dismissKeyguard) {
            mLockPatternView.setDisplayMode(LockPatternView.DisplayMode.Correct);
            mLatencyTracker.onActionStart(LatencyTracker.ACTION_LOCKSCREEN_UNLOCK);
            getKeyguardSecurityCallback().dismiss(true, userId);
        }
    } else {
        mLockPatternView.setDisplayMode(LockPatternView.DisplayMode.Wrong);
        if (isValidPattern) {
            getKeyguardSecurityCallback().reportUnlockAttempt(userId, false, timeoutMs);
            if (timeoutMs > 0) {
                long deadline = mLockPatternUtils.setLockoutAttemptDeadline(
                        userId, timeoutMs);
                handleAttemptLockout(deadline);
            }
        }
        if (timeoutMs == 0) {
            mMessageAreaController.setMessage(R.string.kg_wrong_pattern);
            mLockPatternView.postDelayed(mCancelPatternRunnable, PATTERN_CLEAR_TIMEOUT_MS);
            Handler handler = new Handler();
            handler.postDelayed(
                    new Runnable() {
                        @Override
                        public void run() {
                            mMessageAreaController.setMessage("");
                        }
                    }, PATTERN_CLEAR_TIMEOUT_MS);
        }
    }
}

packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java:132

@Override
public void dismiss(boolean authenticated, int targetId) {
    dismiss(authenticated, targetId, /* bypassSecondaryLockScreen */ false);
}

@Override
public void dismiss(boolean authenticated, int targetId,
        boolean bypassSecondaryLockScreen) {
    mSecurityCallback.dismiss(authenticated, targetId, bypassSecondaryLockScreen);
}

后续与 PIN 码解锁一样

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值