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

这篇具有很好参考价值的文章主要介绍了【Android学习笔记】事件监听机制详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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>异步类文章来源地址https://www.toymoban.com/news/detail-500916.html

    1. 创建AsyncTask的子类,并制定三个参数的类型。
    2. 根据需要实现下列方法
      • dolnBackground()后台线程即将执行的任务,通过调用publishProgress()更新任务的执行进度
      • onProgressUpdate()调用更新任务进度的方法后,会触发这个方法
      • onPreExecute()方法,执行后台操作前被调用,完成初始化工作
      • onPostExcute()后台任务执行完成后,调用这个方法
    3. 调用AsyncTask子类的execute方法开始执行好事任务。

到了这里,关于【Android学习笔记】事件监听机制详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从源码Debug深入spring事件机制,基于观察者模式仿写spring事件监听骨架

    定义一个事件 定义两个listener 注入spring容器里的ApplicationEventPublisher对象,发布事件 从 eventPublisher.publishEvent(new MyEvent(\\\"xxx\\\")); 进去很容易就能找到,可以发现 SimpleApplicationEventMulticaster这个事件发布对象持有所有listenter对象及MyEvent对象 , 事件发布过程其实就是遍历拿到每个li

    2024年02月12日
    浏览(41)
  • Android监听事件

    ​监听事件机制由事件源,事件和事件监听器三类对象组成,事件源一般就是activity中的UI控件。 下面引用别人整理的图来更加形象的表达这些关系。 ​事件监听机制的意义就是让事件源的行为委托给事件监听器,让监听器控制事件的发生。 ​ 通过内部类实现 通过匿名内部

    2023年04月26日
    浏览(76)
  • android鼠标滚轮事件监听方法

    2024年02月08日
    浏览(34)
  • Android 11 定制系统全局监听触摸事件接口

    1.定义创建aidl接口(由于需要回调这里优先需要增加一个回调接口 ) frameworksbasecorejavaandroidappIOnTouchListener.aidl package android.app; oneway interface IOnTouchListener {      void onTouchEvent( int action); }   2.新增调用接口 在 base/core/java/android/view/IWindowManager.aidl 修改如下: import android.ap

    2023年04月08日
    浏览(50)
  • 【Spring | 事件监听详解】

    上篇 Spring 事件监听概述 对 Spring 事件监听的机制有了个基本的了解。 本篇来详细的解读下Spring 的 事件监听机制 。    ApplicationEvent 最重要的子类是 ApplicationContextEvent 抽象类, ApplicationContextEvent 是spring容器Context生命周期事件的基类。 ApplicationContextEvent 的有四个子类,如

    2024年02月12日
    浏览(36)
  • 前端Vue select 下拉框详解以及监听事件

    目录 简介 使用详解 演示示例 :key=\\\"option.value\\\" :value=\\\"option.value\\\" 区别 监听事件         在 Vue 中,下拉框通常通过 select 元素与一系列的 option 元素来创建。Vue 的数据绑定和指令(如 v-model 和 v-for )可以使创建动态下拉框变得非常简单和灵活。下面详细介绍如何在 Vue 中使

    2024年02月20日
    浏览(46)
  • 【SpringBoot笔记34】Spring Events事件驱动编程之事件的发布和监听操作

    这篇文章,主要介绍Spring Events事件驱动编程之事件的发布和监听操作。 目录 一、基于接口实现 1.1、自定义事件 1.2、主动发布事件 1.3、监听事件对象

    2024年02月16日
    浏览(38)
  • Android中实现RecyclerView,并对item及其多个子控件的点击事件监听

    目录 背景 实现RecyclerView 第一步、 新建item的xml 第二步、在activity的布局中引入 RecyclerView 第三步、新建一个adapter   第四步、在activity中初始化绑定adapter即可 实现item及其多个子组件点击事件监听 第一步、 适配器中创建监听对象 第二步、适配器中绑定监听item和子组件 第三

    2024年02月19日
    浏览(53)
  • java 实现事件监听EventListener的方式详解及分析

    我们开发中经常遇到监听事件,首先我们先来了解下事件相关知识: 使用场景(场景一):银行操作转账成功后需要给客户发送短信和邮件,使用事件就可以实现解耦并异步。 我们监听事件之前要有事件源source,创建事件源(Event),发布事件(publishEvent),然后才能到监听事

    2024年02月07日
    浏览(33)
  • Android触摸事件分发机制(一)

    本文主要分享事件分发中的基本概念。 介绍负责参与分发事件的主要方法。 从这些方法的核心逻辑中,总结事件分发的规律。 被分发的对象是那些?被分发的对象是用户触摸屏幕而产生的点击事件,事件主要包括:按 下、滑动、抬起与取消。这些事件被封装成 MotionEvent 对

    2024年02月15日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包