【Android学习笔记】事件监听机制详解

Android Input输入系统之一:KeyEvent事件监听 查看Android系统中的Input设备 getevent -l # getevent -l add device 1: /dev/input/event1 name: "synaptics_dsx" add device 2: /dev/input/event0 name: "sc-powerkey" ls /dev/input/ # ls /dev/input/ ... 阅读详情

Android第三章


>事件处理的概述


  • 两种事件处理机制
    1. 基于监听的事件处理
    2. 基于回调的事件处理

>基于监听的事件处理机制


  • 涉及到的三类对象

    1. Event Source事件源,指各个组件。
    2. Event 界面组件上发生的特定的事情,。
    3. Event Listener监听事件源发生的事情。并对各种事情作出相应的响应。
    4. Event Handler事件处理器,当事件监听器捕获事件后,由响应的事件处理器识别特定的事件,并做出响应的动作。
  • 事件监听机制的工作流程
    普通组件(事件源对象) 发生很多事件,生成多种事件对象 被同一个监听器对象捕获 监听器通过不同的事件处理器处理这个事件。

    每个组件可以根据不同的事件类别指定多个监听器,每一个监听器可以监听多个事件源。

>实现事件监听器的方法


  1. 内部类作为时间的监听器
    使用内部类作为事件监听器能够在这个类内复用该监听器。该监听器类能够自由访问外部类的所有界面组件
  2. 外部类作为时间监听器
    事件监听器通常属于特定的GUI界面,定义成外部类不利于提高程序的内聚性。外部类形式的时间监听器不能够自由访问GUI界面的类中的组件。同时也适用于监听器于GUI界面没有任何耦合情况。

    监听器还是主要来写显示逻辑,具体的业务逻辑放到外部的其他函数或者类中进行处理。

  3. Activity类本身作为事件监听器
    不推荐,activity类本身用来界面初始化工作,包含事件监听器容易造成程序的逻辑结构混乱。
  4. 匿名类作为时间监听器类
    大部分时候事件监听器类的代码没有什么复用价值,所以只要使用匿名类来实现事件监听器想要达到的页面逻辑就好。

android可以直接在界面布局中制定标签绑定事件的处理方式。
android:onClick=“clickHandler”

>基于回调的事件处理方法


  • 回调机制
    事件的处理直接绑定到与组件相关的时间处理函数上,而非通过监听器的监听和事件处理器的匹配处理。有点像事件监听器和事件源融合在一起,不需要单独的时间监听器类,事件源本身能够监听自身发生的各种事件。
  • 基于回调的事件传播
    当返回为true时,表明该方法已经能够处理发生的事件,事件不会向外传播给外层的时间监听器。当返回为false时,如果有外围的监听器处理同一个事件,则事件会向外传播,同时被其他监听器坚挺到。如果存在各种监听器,其监听顺序为:绑定的事件监听器–>基于回调的内部事件监听器–>基于回调的外部事件监听器。

>相应系统设置的事件


  • 用来获取系统的配置
  • onConfigurationChanged能够监听相关的配置改变的事件。

>Handler消息传递机制


  • 工作原理
    android第一次启动,主线程负责activityUI界面的线程,而且只允许UI线程对主界面进行修改,其他新启动的线程无法对主界面进行直接修改,需要使用Handler进行消息传递。

  • Handler简介

    1. 在新启动的线程中发送消息
    2. 在主线程中获取和处理消息

    好像是原来的事件处理机制变成了消息处理机制,通过监听消息,处理消息完成一系列动作,同事件处理一样。

  • Handler涉及的方法

    1. HandlerMessage()
    2. hasMessage()
    3. hasMessages()
    4. obtainMessage()
    5. sendEmptyMessage()
    6. sendEmptyMessageDelayed()
    7. sendMessage()
    8. sendMessageDelayed()
  • Handler、Loop、MessageQueue的工作原理

    1. Message是Handler接受和处理的对象
    2. Looper每个线程只能有一个Looper,loop方法负责读取MessageQueue中的消息
    3. MessageQueen消息队列,采用了先进先出的方式管理队列。
private Looper()
{
	mQueue = new MessageQueue();
	mRun = true;
	mThread = Thread.currentThread();
}
  • Looper类的使用方法
    1. 调用Looper的prepare方法,创建Looper对象,生成对应的MessageQueue来管理事件
    2. 创建Handler子类,用于发送本线程的消息。重写HandlerMessage方法,负责处理来自其他线程的消息。
    3. 调用Looper的loop方法启动Looper类

UI线程一般专门用来相应用户的界面操作,而其他的逻辑运算和处理都交给其他线程处理主要目的是防止UI线程被阻塞而让用户以为界面卡顿。
此时如果UI线程与其他线程的交互方式,就是Handler消息传递机制,同事件监听机制的逻辑十分相似。

>异步任务


  • 解决新线程不能更新UI主界面的问题的方法

    • 使用Handler消息处理机制
    • Activity.runOnUiThread(Runnable)
    • View.post(Runnable)
    • View.postDelayed(Runnable,long)
    • 异步处理机制
  • AsyncTask<Params,Progress,Result>异步类

    1. 创建AsyncTask的子类,并制定三个参数的类型。
    2. 根据需要实现下列方法
      • dolnBackground()后台线程即将执行的任务,通过调用publishProgress()更新任务的执行进度
      • onProgressUpdate()调用更新任务进度的方法后,会触发这个方法
      • onPreExecute()方法,执行后台操作前被调用,完成初始化工作
      • onPostExcute()后台任务执行完成后,调用这个方法
    3. 调用AsyncTask子类的execute方法开始执行好事任务。
Android移动终端设计实验二+事件监听实验 Android移动终端设计实验二+事件监听实验 实验2:事件监听实验 一、     实验目的 本次实验的目的是掌握控件的基于事件监听内部类、基于事件监听内部匿名类、Activity本身作为事件监听器以及直接绑定到标签等四种常用的事件处理方法。 二、     实验环境 Windows7  Eclipse MARS.2  AVD虚拟机 阅读详情

相关推荐

Android 基于监听的事件处理机制详解

一、监听的三要素: Event source 事件源 Event 事件 Event Listener 事件监听器

路宇的博客 2442

android事件监听的4种方式

(4)创建一个继承自View.OnClickListener的Activity,由此Activity实现OnClick(View view)方法,在此方法中利用switch-case根据Button控件的id进行单击事件的对象监听识别。Activity本身作为事件监听器类:让Activity本身实现监听器接口,并实现事件处理方法。Button的点击状态事件有三种:(1)单击事件;比如,匿名内部类形式:使用匿名内部类创建事件监听器对象。(1)内部类形式:将事件监听器类定义在当前类的内部。

qq_58259539的博客 4875

Android中监听器的使用方法总结——OnClickListener

综上所述,OnClickListener是一种常用的监听器,在Android开发中用于响应控件的点击事件。为了简化代码,我们还可以使用匿名内部类来实现OnClickListener接口,并直接在setOnClickListener()方法中定义点击事件的处理逻辑。一般情况下,我们将OnClickListener监听器与特定的控件绑定,以便在用户点击该控件时触发相应的操作。使用Lambda表达式后,我们无需再编写完整的匿名内部类,只需在箭头函数中编写相应的点击事件处理逻辑,使得代码更加简洁易读。

ByteJolt的博客 698

Android 之 基于监听的事件处理机制

只需要让Activity类实现XxxListener事件监听接口,在Activity中定义重写对应的事件处理器方法 eg:Actitity实现了OnClickListener接口,重写了onClick(view)方法在为某些组建添加该事件监听对象 时,直接setXxx.Listener(this)即可。事件监听机制是一种委派式的事件处理机制,事件源(组件)事件处理委托给事件监听器 当事件源发生指定事件时,就通知指定事件监听器,执行相应的操作。//重写点击事件的处理方法onClick()

leyang0910的博客 357

Android实现事件监听常用的几种方法 (附完整源码)

Android实现事件监听常用的几种方法 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 665

安卓平台实现长按录制语音功能详解

功能性测试总结:汇总功能性测试中每项测试用例的结果,并分析未通过用例的根本原因。性能测试结果:列出性能测试的各项指标数据,包括内存、CPU使用情况,以及电池消耗等。测试覆盖率:评估测试用例对功能需求的覆盖程度,确定测试范围是否全面。

weixin_42576410的博客 1152

Android | 事件监听处理机制的五种方式

文章目录一、事件监听是什么?二、事件监听机制流程三、五种不同的使用方式0、效果展示1、直接用匿名内部类2、使用内部类3、使用外部类4、直接使用Activity作为事件监听器5、直接绑定到标签 一、事件监听是什么? 其实就简单的一句话:响应用户的操作,然后在后台加上相应的操作。比如:我们点击了页面上的一个按钮,事件监听捕捉到了点击,然后再给出用户一种反馈。 二、事件监听机制流程 话不多说,先上个流...

lesileqin的博客 5572

别再乱设阻尼了!Abaqus动力分析中瑞利阻尼的α和β到底怎么算?

本文深入解析Abaqus动力分析中瑞利阻尼参数α和β的科学计算方法,帮助工程师准确设置阻尼参数以提升仿真精度。详细介绍了基于模态阻尼比的经典计算方法和多模态优化法,并结合工程案例演示参数设置流程,避免常见的阻尼设置误区。

weixin_42634811的博客 731

android事件监听回调机制

Android事件侦听器是视图View类的接口,包含一个单独的回调方法。这些方法将在视图中注册的侦听器被用户界面操作触发时由Android框架调用。回调方法被包含在Android事件侦听器接口中:    例如,Android 的view 对象都含有一个命名为 OnClickListener 接口成员变量,用户的点击操作都会交给 OnClickListener的 OnClick() 方法进行处

逐梦者频道 1万+

简单的服务器取证

记一次入门服务器取证——药品直销网,涵盖旧版本宝塔、静态IP的配置更改、代码的理解

m0_74559567的博客 3756

从jieba分词到BERT-wwm——中文自然语言处理(NLP)基础分享系列(12)

今天是本系列的最后一期,完整代码呈现Huggingface transformers平台上微调BERT-wwm-ext的过程方法。

weixin_49518391的博客 3763

安卓的Handler机制、AsyncTask 、Toast和事件监听机制

一. Handler 的使用方法 1. Handler 作用 在开发中,我们经常会需要做一些耗时的操作:比如下载图片、打开网页、下载视频等。如果将这些耗时的操作放在主线程(UI线程),长时间的阻塞导致应用ANR。必然应该将这些操作放在子线程中处理,这些操作处理过程中,我们需要更新UI界面以告知用户现在具体的进度、状态等信息。 所以:在多线程的应用场景中,将工作线程中需更新UI的操作信息 传递到UI主线程,从而实现 工作线程对UI的更新处理,最终实现异步消息的处理 但是,多个线程并发执行U...

mike_jun的博客 1370

帆软报表JS导出避坑指南:如何正确处理sessionid和参数传递

本文深入探讨了帆软报表中通过JavaScript实现一键导出的关键技术,重点解析了如何正确获取并传递sessionid以确保会话不丢失,以及如何构造包含必要参数的导出URL。文章详细对比了预览后导出与直接URL导出两种方式的差异,并提供了从参数拼接、前端触发下载到高级场景(如SPA集成)的完整避坑指南,帮助开发者构建稳定可靠的自定义导出功能。

weixin_42522857的博客 161

Android基于事件监听器处理机制

一、Android的事件处理 Android事件处理包括两个部分:Android事件处理机制(基本)和Android消息传递机制(进阶)。前者包含三种处理方式,即基于监听的事件处理、基于回调的事件处理、直接绑定到标签;后者包含两种处理方式,即Handler消息传递、异步任务处理。  1.Android的事件处理机制 (1)基于监听的事件处理方式 通常做法是为Android界面组件绑定特定的事

yimeng的专栏 735

【机器人开发】四足机械狗(并联结构)URDF建模与Simscape仿真全流程解析

本文详细解析了四足机械狗(并联结构)从URDF建模到Simscape仿真的全流程开发。内容涵盖SolidWorks建模要点、URDF文件导出与优化、Matlab/Simscape环境搭建,以及并联机构特有的运动控制和步态规划实现,为机器人开发者提供了一套完整的解决方案。

weixin_30642561的博客 529

195、大模型蒸馏与压缩:知识蒸馏与VLA模型轻量化

折腾完这一整套流程,最大的感悟是:知识蒸馏不是简单的模型压缩,而是知识迁移的工程艺术。每一步都有坑,每个参数都可能影响最终性能。给后来者的建议是:先别急着上蒸馏,把teacher模型的推理延迟和显存占用测清楚,确定瓶颈在哪里——是计算量太大还是内存带宽不够,这决定了你该用蒸馏还是量化还是剪枝。蒸馏训练时一定要监控每一层的特征对齐loss,别只看总loss。如果某一层的对齐loss特别高,说明student在这一层学歪了,需要调整该层的损失权重或者增加该层的投影头容量。

sundong_81的博客 110

PRDownloader事件监听机制详解:掌握下载过程的每一个细节

PRDownloader是Android平台上功能强大的文件下载库,支持暂停和恢复功能,为开发者提供了完整的下载管理解决方案。这个库的事件监听机制是其核心特色之一,通过丰富的回调接口让开发者能够精准掌握下载过程中的每一个细节变化。 ## 🎯 为什么需要事件监听机制? 在移动应用开发中,文件下载是常见的功能需求。传统的下载方式往往难以追踪下载进度、处理异常情况或提供良好的用户体验。PRDown

gitblog_01145的博客 1045

Android 12.0 系统开机设置默认横屏显示

在12.0的系统产品开发中,对于产品需求来说,由于是宽屏设备所以产品需要开机默认横屏显示,开机横屏显示这就需要从两部分来实现,一部分是开机动画横屏显示,另一部分是系统显示横屏显示,从这两方面就可以做到开机默认横屏显示了。

安卓兼职framework和app工程师的博客 3743

HoRain云--Android事件监听机制五大实战技巧

本文介绍了Android事件监听机制的实现方式。首先解释了事件监听的基本模型,包含事件源、事件和事件监听器三个核心组件。然后详细阐述了五种具体实现方法:1)使用匿名内部类(最常用);2)使用内部类(可复用);3)使用外部类(较少用);4)让Activity直接实现监听接口;5)在XML布局中直接绑定事件处理方法。文章指出前三种和第五种方法较为常用,并强调这些方法同样适用于其他事件类型(如onItemClickListener)。最后作者谦虚表示欢迎指正,鼓励读者持续学习。

sinat_57153473的博客 1065

Unity如何实现3D物体拆解组装

最近有一个需求,是做一个发动机的拆卸和安装功能,其实是一个很简单的功能,但是其中有一个点我觉的非常有意思,就是拖拽组装时,物体如何精准拖到目标位置,思路有了,但是我一直找不到实现方式,早晨刷牙时无意间想到了叉乘,我才有了解决方案。就凭这一次的灵光乍现,也很有必要写篇博客来记录一下。首先,我们先来看下我们要实现的效果,就是对一个发动机(任意多组件物体,如:车)的360°预览查看,手动拖拽拆解,手动拖拽组装。360°旋转视角远近拉伸视角点击拖拽拆卸拖拽组装。

TxNet 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Android笔记Android基于事件监听器处理机制

一、Android的事件处理 Android事件处理包括两个部分:Android事件处理机制(基本)和Android消息传递机制(进阶)。前者包含三种处理方式,即基于监听的事件处理、基于回调的事件处理、直接绑定到标签;后者包含两种处理方式,即Handler消息传递、异步任务处理。  1.Android的事件处理机制 (1)基于监听的事件处理方式 通常做法是为Android界面组件绑定特定的事件监

qq_24954199的博客 910

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

安卓学习笔记——安卓按键事件

添加一个图像视图,设置相关属性(scaleType - 缩放类型;src - 图像源)将默认的约束布局改成线性布局,设置相关属性。获取米老鼠图像控件的布局参数。通过资源标识符获取控件实例。给线性根布局注册按键监听器。让线性根布局获得焦点。

qq_55878784的博客 1022

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Android事件监听机制详解与实践指南

事件监听是Android开发中实现用户交互的核心技术,基于观察者模式构建。当用户操作UI组件时,系统通过事件源、监听器和事件对象的三层架构传递事件信息。开发者常用的View.OnClickListener等接口,为按钮点击等操作提供标准化处理方案。在电商应用等高交互场景中,合理使用匿名内部类、接口实现或Lambda表达式等监听方式,能有效提升代码可维护性。同时需要注意避免内存泄漏和事件冲突,通过GestureDetector等工具类还能实现复杂手势识别。掌握这些事件处理技巧,是构建流畅Android应用的基

weixin_30279315的博客 264

Android开发者必知:HoloColorPicker的事件监听与颜色处理详解

HoloColorPicker是一款专为Android平台设计的Holo风格颜色选择器,由Marie Schweiz精心设计。作为Android开发者,掌握其事件监听机制和颜色处理方法,能让你的应用拥有更专业的色彩交互体验。本文将带你快速掌握HoloColorPicker的核心用法,轻松实现自定义颜色选择功能。 ## 认识HoloColorPicker核心组件 HoloColorPicker库

gitblog_01177的博客 823

安卓之事件监听机制

基于事件监听的处理 在事件监听的处理模型中,主要涉及事件源、事件和事件监听器这三类对象。 事件源:通常就是各个组件,如按钮,菜单等; 事件:就是一次用户的操作。 事件监听器:监听事件源发生的事件,并对各事件进行相应的响应。 1、获取事件源 2、实现事件监听的类 3、给事件源注册事件监听器,调用setXXXListener()方法 事件发生的地方和事件

xuewenke的专栏 901
上一篇: 【android学习笔记】基础知识详解工程介绍
下一篇: 【Android学习笔记】Activity和Fragment
onnx
博客等级 码龄5年 1万+粉丝 416原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

onnx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值