Android 基于回调的事件处理机制详解

简介: Android 基于回调的事件处理机制详解

前言:

基于监听的事件处理机制请看这边文章 Android 基于监听的事件处理机制

1、回调机制与监听机制的区别:

监听机制的事件源与事件监听是分开的。我们需要自己设置一个监听器,

回调机制的事件源与事件监听是绑定在一起的。

2、基于回调事件的传播

我们通过自定义button 在控件内实现一些方法的回调。我们通过给button按钮设置触摸事件,回调用户按下这一瞬间的要处理的事件。

首先创建MyButton类继承自AppCompatButton,在这个类里面设置触摸事件。

public class MyButton extends AppCompatButton {
    public MyButton(Context context) {
        super(context);
    }
    public MyButton(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public MyButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()){
            case MotionEvent.ACTION_DOWN: //用户按下的一瞬间
                Log.e("MyButton", "---onTouchEvent---" );
                break;
        }
        return false; //设置为false 表示此事件没有被消费,会继续向下传播
    }
}

之后我们在Activity中也实现这个相同的事件:

@Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()){
            case MotionEvent.ACTION_DOWN:
                Log.e("EventActivity", "---onTouchEvent--- ");
                break;
        }
        return false;
    }

之后我们按下这个按钮,会触发按下的这个事件,输出以下日志:

这个现象说明,当我们给一个控件内部设置触摸,按压等事件后,用户点击屏幕触发了相应的时间,系统会自动回调相关的方法,而Activity也打印了日志,说明这个事件是从控件本身,向外传播的。

接着我们给这个自定义的按钮设置触摸监听器

btn_my.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                Log.e("listener", "--onTouch-- " );
                return false;
            }
        });

之后再次触摸该按钮,输出日志为:

listener先被打印,说明先执行了触摸事件监听器中的方法。

那么也就说明监听优先于回调先被执行。


目录
相关文章
|
7天前
|
Java Android开发
Android系统 获取用户最后操作时间回调实现和原理分析
Android系统 获取用户最后操作时间回调实现和原理分析
15 0
|
28天前
|
前端开发 编译器 Android开发
构建高效Android应用:探究Kotlin协程的异步处理机制
【4月更文挑战第2天】在现代移动应用开发中,提供流畅且响应迅速的用户体验是至关重要的。随着Android平台的发展,Kotlin语言凭借其简洁性和功能性编程的特点成为了主流选择之一。特别地,Kotlin协程作为一种新型的轻量级线程管理机制,为开发者提供了强大的异步处理能力,从而显著提升了应用程序的性能和响应速度。本文将深入探讨Kotlin协程在Android中的应用,分析其原理、实现以及如何通过协程优化应用性能。
|
3月前
|
存储 Java Android开发
Android系统升级的机制概要
Android系统升级的机制概要
44 0
|
7月前
|
开发工具 Android开发 开发者
Android如何回调编码后的音视频数据
有开发者提到,在RTMP推送端的基础上,希望能回调编码后的音视频数据,便于开发者对接第三方系统,如GB28181.
|
7天前
|
存储 Java Linux
Android系统获取event事件回调等几种实现和原理分析
Android系统获取event事件回调等几种实现和原理分析
29 0
|
28天前
|
API 调度 Android开发
探索Android应用程序的后台运行机制
在移动应用开发中,了解和掌握Android应用程序的后台运行机制至关重要。本文将深入探讨Android平台上应用程序的后台运行原理及其影响因素,包括后台服务、广播接收器、JobScheduler等关键组件,以及如何有效管理后台任务以提升应用性能和用户体验。
16 3
|
4月前
|
Android开发 容器
[Android]View的事件分发机制(源码解析)
[Android]View的事件分发机制(源码解析)
37 0
|
4月前
|
消息中间件 缓存 安全
android开发,使用kotlin学习消息机制Handler
android开发,使用kotlin学习消息机制Handler
84 0
|
4月前
|
安全 Android开发 Kotlin
android开发,使用kotlin学习Android权限机制
android开发,使用kotlin学习Android权限机制
41 0
|
6月前
|
Java Android开发 C++
[笔记]Visual Studio 2015 开发安卓so库JNI层——回调调用
[笔记]Visual Studio 2015 开发安卓so库JNI层——回调调用