android之回调函数的用法和意义

CallBack是回调的意思,一般称之为回调函数百科的解释:http://baike.baidu.com/link?url=8yMUwVEFRzxR4JGMxVN_UnFgJIH4WTnsybuW5NfwgKqVKP8NtShfJnNNeY9mBzRT用一个比较形象的例子:你饿了,想吃饭,就一会去问你妈一声”开饭没有啊?”这就是正常函数调用.但是今天你妈包饺子,花的时间比较长,

大家好,又见面了,我是全栈君。

CallBack是回调的意思,一般称之为回调函数

百科的解释:http://baike.baidu.com/link?url=8yMUwVEFRzxR4JGMxVN_UnFgJIH4WTnsybuW5NfwgKqVKP8NtShfJnNNeY9mBzRT

用一个比较形象的例子:

你饿了,想吃饭,就一会去问你妈一声”开饭没有啊?”

这就是正常函数调用.
但是今天你妈包饺子,花的时间比较长,你跑啊跑啊,就烦了.于是你给你妈说,我先出去玩会,开饭的时候打我手机.

等过了一阵,你妈给你打电话说”开饭啦,回来吃饭吧!”
其中,你告诉你妈打手机找你,就是你把回调函数句柄保存到你妈的动作.你妈打电话叫你,就是个回调过程.

下面用一个Android中应用到”回调”的场景,来进一步解释。

Button button = (Button)this.findViewById(R.id.button);
button.setOnClickListener(new Button.OnClickListener() {

  //回调函数
  @override
  publicvoid onClick(View v) {
    buttonTextView.setText("按钮被点击了");
  }
});

这里肯定很熟悉了,给Button设置监听器

这其实就是”回调”最常见的应用场景之一。我们自己不会显示地去调用onClick方法。用户触发了该按钮的点击事件后,它会由Android系统来自动调用。

 

在这里我们用代码,模拟注册事件监听器。
先写一个监听器接口

package com.listener;

/**
 * 点击监听器接口
 * @author jason0539
 *
 */
public interface MyOnClickListener {
    public void onClick();
}

然后写一个我们自己的Button类

package com.listener;

public class MyButton {
    private MyOnClickListener listener;
    
    /**
     * 设置具体点击监听器
     * @param listener 点击监听器实现类
     */
    public void setOnClickListener(MyOnClickListener listener) {
        this.listener = listener;
    }
    
    /**
     * 按钮被点击
     */
    public void doClick() {
        listener.onClick();
    }
}

最后模拟Client端的注册监听器和触发点击操作。

package com.listener;

publicclass Client {
    public static void main(String[] args) {
        MyButton button =new MyButton();
        //注册监听器
        button.setOnClickListener(new MyOnClickListener() {

            @Override
            public void onClick() {
                System.out.println("按钮被点击了");
                
            }
            
        });
        //模拟用户点击
        button.doClick();
    }
}

以上就是”回调”思想在Java中事件监听的运用

用心体会一下,是不是就知道,什么是CallBack,什么是回调函数了.

作者:jason0539

微博:http://weibo.com/2553717707

博客:http://blog.csdn.net/jason0539(转载请说明出处)

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121408.html原文链接:https://javaforall.net

(1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 内网安全 信息收集(收集内网计算机的所有信息 进行攻击.)

    内网安全 信息收集(收集内网计算机的所有信息 进行攻击.)?“信息收集”会对渗透测试工程师和网络安全工程师具有重大作用:???在渗透测试人员进入一个内网后,面对的是一片“未知的区域”,所以渗透测试人员首先会对当前所处的网络环境进行判断,通常的判断分为三种.?(1)我是谁?——对计算机的角色进行判断.?(2)我在哪?——对目前机器所处位置区域的判断。?(3)这是哪?——对目前机器所处网络环境的拓扑结构进行分析和判断。

    2022年6月29日
    19
  • 网站响应时间过长的原因及解决方法

    网站响应时间过长的原因及解决方法

    2021年10月14日
    180
  • python中的%s%是什么意思

    python中的%s%是什么意思python中的%s%是什么意思它是一个字符串格式化语法(它从C借用)。请参阅“格式化字符串”:Python支持将值格式化为字符串。虽然这可以包括非常复杂的表达式,但最基本的用法是将值插入到%s占

    2022年7月6日
    28
  • libevent 定时器

    libevent 定时器#include#include#include#include#include#include#include#includestructeventev;structtimevaltv;voidtime_cb(intfd,shortevent,void*argc){printf(“timerwakeup\n”);

    2025年6月6日
    0
  • vue-router路由懒加载_vue图片懒加载

    vue-router路由懒加载_vue图片懒加载什么是路由懒加载官方的解释:当打包构建应用时,JavaScript包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更

    2022年7月30日
    5
  • 《智慧城市时空大数据平台建设技术大纲(2019版)》解析——未完,待续

    《智慧城市时空大数据平台建设技术大纲(2019版)》解析——未完,待续2月18日,自然资源部办公厅发布关于印发《智慧城市时空大数据平台建设技术大纲(2019版)》我们先来回顾下之前国家对于智慧城市建设的指导性纲要文件:1、2015年,《智慧城市时空信息云平台建设技术大纲》2、2017年,《智慧城市时空大数据与云平台建设技术大纲》3、2019年,《智慧城市时空大数据平台建设技术大纲》从2015年开始,智慧城市历经从“时空信息云平台”到“时空大数据与云平…

    2022年6月6日
    155

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号