Android Power 键短按的息屏代码流程

位于 PhoneWindowManager.java:

interceptKeyBeforeQueueing()

handleKeyGesture()

interceptKey()

interceptKeyUp()

sendMessage()

case MSG_KEY_DELAY_PRESS:<override> onPress()

powerpress()

case SHORT_PRESS_POWER_GOTO_SLEEP:sleepDefaultDisplayFromPowerButton()

sleepDefaultDisplay()

mPowerManager.gotoSleep()

//er将被其中interactive注释意为可交互,即现在是否是息屏状态

//case KeyEvent.KEYCODE_POWER:处可作return passtouser将被系统屏蔽的重要按键如power键传递给application,非重要按键是否传递给应用可在interceptKeyBeforeQueueing()中的isValidGlobalKey()作改动

“ 唤醒的时候,唤醒广播是在handleEarlyInteractiveChange方法,就是在通知PhoneWindowManager 去执行startedWakingUp方法,紧跟着就执行updatePendingBroadcastLocked方法,去发送唤醒广播
而在息屏的时候,在handleEarlyInteractiveChange里,我们只是通知PhoneWindowManager去执行startedGoingToSleep方法,最后在updatePowerStateLocked==>finishWakefulnessChangeIfNeededLocked==>Notifier==>onWakefulnessChangeFinished==》handleLateInteractiveChange方法里,在通知PhoneWindowManager执行finishedGoingToSleep()之后,才执行updatePendingBroadcastLocked()方法去发送息屏广播(Intent.ACTION_SCREEN_OFF),这个时机需要特别注意一下。”

//Power按键流程除息屏外的其他事情可参考博客 https://blog.csdn.net/jwg1988/article/details/123899706

posted @ 2022-11-14 11:40  小汀  阅读(237)  评论(0编辑  收藏  举报