framework PhoneWindowManager.java代码全面剖析

一般对于开发者来说,只需要看两个方法即可

 public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags)
public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int policyFlags)

看名字就知道,在执行拦截之前,先执行上面的方法,再执行下面的方法

interceptKeyBeforeQueueing会取决于是否按键的有效性,以及处理一些特殊的按键,例如

KeyEvent.KEYCODE_POWER
KeyEvent.KEYCODE_WAKE

这样一类特殊的按键,同样地,开发者在处理这一类按键(HOME,VOLUME,BACK)等,可以选择在这里处理

而interceptKeyBeforeDispatching是处理一般性的按键和动作

你可能感兴趣的:(android)