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
本文来自博客园,作者:小汀,转载请注明原文链接:https://www.cnblogs.com/1118zjg/p/16888509.html