Android???TextView???????????
???????????? ???????[ 2013/5/16 10:28:29 ] ????????
????PhoneWindow?????????getCallback??????Window??????????????????????Window.Callback????????Activity?????????????Window.Callback????????????Window.Callback???????????????????????PhoneWindow???????????????????PhoneWindow????????????????????????ü???????????????????????Activity????????
????DecorView?????????mFeatureId???????????????????DecorView??????????????????С??0??????????????????????DecorView?????????????????Activity?????????????????
?????????????????????DecorView???????????????Activity???????????????????????Activity???????????Window.Callback??????DecorView?????????dispatchKeyEvent??????Window.Callback??????????dispatchKeyEvent?????????Activity?????????????????????????????????????event????????????????????????????????DecorView????????????????????????????DecorView??????View????????dispatchKeyEvent???????
??????????赱?????????DecorView???????????????Activity???????????????????????Activity???????????Window.Callback???????????event??????????????????????????Activity?????????????Activity????????????????????????????ü???????????????????????????????????????????Window.Callback??????????dispatchKeyEvent??????handled?????false???????DecorView?????????dispatchKeyEvent???ü??????????????????????DecorView???????????????PhoneWindow???????????onKeyDown????onKeyUp???????????????isDown?????true????false??????????????????????????????й??????????????й??
????PhoneWindow?????????onKeyDown??onKeyUp?????????????Щ???????????????綽??????????????????????Щ?????????????磬?????μ綽??????????????;???磬??????????????????????????С??
???????????????????????Activity????????Window.Callback??????????dispatchKeyEvent???????????????????????Activity???????????????
????Step 7. Activity.dispatchKeyEvent
????[java] view plaincopyprint?
????public class Activity extends ContextThemeWrapper
????implements LayoutInflater.Factory??
????Window.Callback?? KeyEvent.Callback??
????OnCreateContextMenuListener?? ComponentCallbacks {
????......
????public boolean dispatchKeyEvent(KeyEvent event) {
????......
????Window win = getWindow();
????if (win.superDispatchKeyEvent(event)) {
????return true;
????}
????View decor = mDecor;
????if (decor == null) decor = win.getDecorView();
????return event.dispatch(this?? decor != null
????? decor.getKeyDispatcherState() : null?? this);
????}
????......
????}
????public class Activity extends ContextThemeWrapper
????implements LayoutInflater.Factory??
????Window.Callback?? KeyEvent.Callback??
????OnCreateContextMenuListener?? ComponentCallbacks {
????......
????public boolean dispatchKeyEvent(KeyEvent event) {
????......
????Window win = getWindow();
????if (win.superDispatchKeyEvent(event)) {
????return true;
????}
????View decor = mDecor;
????if (decor == null) decor = win.getDecorView();
????return event.dispatch(this?? decor != null
????? decor.getKeyDispatcherState() : null?? this);
????}
????......
????}
????????????????????frameworks/base/core/java/android/app/Activity.java?С?
????Activity?????????getWindow?????????????????Activity??????????????PhoneWindow????Activity?????????dispatchKeyEvent????????PhoneWindow??????????????????????superDispatchKeyEvent?????????????event??????????????????????????
???????PhoneWindow???????????????event????????????????????????ü??????????????·???????Activity?????????dispatchKeyEvent???ü??????????????????????Activity??????????????????ò???event???????????KeyEvent???????????dispatch???????
????????????event???????????KeyEvent???????????dispatch?????????????????????????????Activity????????????KeyEvent.Callback????????event?????????KeyEvent???????????dispatch????е?????У??????????????KeyEvent.Callback??????????onKeyDown??onKeyUp????onKeyMultiple??????????????????????????????????Activity?????????onKeyDown??onKeyUp????onKeyMultiple?????????event??????????????????????????????????Activity??????????????????????Activity?????????????????????д????Activity????????onKeyDown??onKeyUp????onKeyMultiple??
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11