`

Android中KeyEvent的生命周期

阅读更多
1、生成

存在这样一个线程,它不断地从driver读取Event,并把它放到RawEvent队列中。这个队列中的RawEvent既有按键,也有触摸、轨迹球等事件。

RawEvent队列中的每个RawEvent最后都会通过一系列转化,最终变为KeyEvent被发送给另外一个线程,即输入线程,也就是一个Activity的主线程。



2、传递

KeyEvent传递过程主要可以划分为三步:过滤器、View树、Activity

过滤器部分主要对应着PhoneWindowManager.java中的interceptKeyTq和interceptKeyTi这两个方法。它们的代码可以在frameworks/base/policy/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java中看到。

这两个过滤器最大的不同就是interceptKeyTq用于RawEvent,而interceptKeyTi用于KeyEvent。

在一个没有实体键盘的机器上,Power键会被interceptKeyTq这个过滤器吃掉用来调用关机对话框或者使机器休眠。而Home键会被interceptKeyTi这个过滤器吃掉,用来把当前Activity切换到后台并把桌面程序切换到前台。所以,应用程序在View和Activity的onKeyDown/Up中是监听不到这两个按键的。除了这两个键以外的按键,都有机会继续前进。接下来,KeyEvent会先经过interceptKeyTi过滤器,如果这个过滤器不吃掉的话,就会继续前进,进入View树,如果没有被哪个View吃掉的话,最后进入到Activity的onKeyDown/Up方法中。

当一个KeyEvent经过上面的过程还没有被吃掉的话,系统就会利用它做一些定制的功能。比如音量键被系统用来调整声音,多媒体按键用来控制媒体播放,搜索键用来快速打开搜索功能,返回键用来退出当前Activity等。
分享到:
评论

相关推荐

    Android onKeyDown监听返回键无效的解决办法

    总结来说,正确处理Android中返回键的监听需要开发者对Activity生命周期中的事件处理方法有一个清晰的认识,同时了解并正确使用onKeyDown()、dispatchKeyEvent()和onBackPressed()这三个关键的方法。对于特殊情况,...

    android 全局悬浮按钮实现key事件

    这通常涉及到处理权限、窗口管理(Window Manager)和生命周期管理等复杂问题。这超出了当前的描述范围,但可以作为进一步学习的方向。 总结一下,本教程讲解了如何在Android中实现一个全局的悬浮按钮,并使其能够...

    Android面试真题

    横竖屏切换时,Activity生命周期的变化取决于清单文件中`android:configChanges`的设置。如果不设置,切屏会触发整个生命周期;若设置为"orientation|keyboardHidden",则只会调用onConfigurationChanged()。 将...

    传智播客Android面试题74道.pdf

    对于多媒体播放,在Activity中可以使用MediaPlayer类来控制音乐、视频的播放,同时在Activity的生命周期中适当管理MediaPlayer实例的暂停和播放,例如在Activity的onStop()方法中暂停播放,在onStart()中恢复播放,...

    Android面试题整理精编版.doc

    Android 面试题整理精编版是 Android 开发者的必备知识,涵盖了 Activity 的生命周期、Activity 之间的跳转、横竖屏切换、Activity 的样式设置、后台 Activity 被系统回收等多方面的知识点。 1. 什么是 Activity? ...

    Android中的WebView详细介绍

    - **减少内存占用**:合理管理WebView的生命周期,及时释放资源,避免内存泄漏。 综上所述,Android的WebView是一个功能强大的工具,通过熟练掌握其使用方法和高级特性,开发者可以构建出集成了丰富网络内容的应用...

    传智播客Android面试题30页 精品

    在Android应用开发中,面试时常会涉及到对核心概念的理解,如Activity的生命周期以及不同组件间的交互。本文将深入解析这些问题,帮助开发者提升面试竞争力。 1. **Activity的定义与作用** Activity是Android四大...

    Android拦截HOME按键

    首先,我们需要理解Android的Activity生命周期。当用户按下HOME键时,系统会调用Activity的onPause()和onStop()方法,将当前应用置于后台。若用户重新打开应用,系统会调用onRestart()、onStart()和onResume()方法...

    Android应用源码之按键的处理.zip

    这两个方法是Activity生命周期的一部分,它们分别在物理按键被按下和释放时被调用。在onKeyDown()方法中,我们可以检查按键的键码(KeyEvent.keyCode),并根据键码执行相应的操作。如果处理了按键事件,应返回true...

    Android 飞机大战小游戏

    9. **Android生命周期管理**:在Android环境中,应用程序的生命周期管理至关重要。游戏需正确处理Activity的暂停、恢复、销毁等状态,确保数据保存和恢复,以及资源的有效释放。 10. **用户输入处理**:游戏需要...

    Android面试题总结

    4. **横竖屏切换**: 横竖屏切换时,Activity生命周期的处理取决于在清单文件中对`android:configChanges`的设置。默认情况下,屏幕切换会导致Activity销毁和重建;如果设置`android:configChanges="orientation|...

    Android中实现再按一次返回键退出应用程序

    这个过程涉及到Android的生命周期管理、事件处理以及用户交互设计。 首先,我们需要创建一个新的Activity,例如命名为ExitActivity。在ExitActivity中,我们需要重写onKeyDown()方法来捕获硬件返回键的按下事件。在...

    Android面试题整理

    在Android开发中,面试题常常涉及对Android Framework的理解以及Activity的工作方式和生命周期管理。下面将详细阐述这些知识点。 1. **什么是Activity?** Activity是Android四大组件之一,它代表了用户界面的一个...

    2018网龙Android面试题整理.doc

    在Android应用开发中,了解并掌握Activity的概念及其生命周期至关重要。Activity作为Android四大组件之一,是用户与应用程序交互的主要接口。每个Activity通常对应一个用户界面,通过`setContentView()`设置要显示的...

    android面试宝典.doc

    * 生命周期描述的是一个类从创建到销毁的过程中会执行的方法。 * 生命周期包括 onCreate、onDestroy、onStart、onStop、onResume、onPause 等方法。 * onCreate 方法在 Activity 创建时执行,onDestroy 方法在 ...

    android各组件详解-activity

    ### Android各组件详解:Activity #### 一、Activity概述与生命...总之,理解Activity的生命周期和如何有效地管理它是开发Android应用的关键。通过合理地使用Activity,开发者可以构建出既美观又功能强大的移动应用。

    Android宝典

    ### Android宝典:深入解析Activity及其生命周期管理 #### 一、理解Activity的本质 在Android开发中,`Activity`是四大核心组件之一,它主要负责管理应用程序的用户界面,每一个可视化的用户界面通常对应一个`...

    Android 屏蔽home,菜单,返回键 解锁,加锁

    4. 在处理按键事件时,要尊重Android的生命周期,确保在适当的时候取消注册BroadcastReceiver,防止内存泄漏。 综上所述,Android平台提供了多种方式来控制和定制用户界面的行为,包括屏蔽和解锁系统按键。但开发者...

    android 控制fragment返回

    Fragment具有自己的生命周期,包括onCreate(), onCreateView(), onViewCreated(), onStart(), onResume(), onPause(), onStop(), onDestroyView(), onDestroy()和onDetach()等方法。在处理返回键事件时,了解这些...

Global site tag (gtag.js) - Google Analytics