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(转载请说明出处)

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)


相关推荐

  • jquery拼音转汉字搜索[通俗易懂]

    jquery拼音转汉字搜索[通俗易懂]HTML:1DOCTYPEhtmlPUBLIC”-//W3C//DTDXHTML1.0Transitional//EN””http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>2htmlxmlns=”http://www.w3.org/1999/xhtml”>34head>5

  • linux磁盘分区fdisk命令详解及云硬盘挂载实操「建议收藏」

    linux磁盘分区fdisk命令详解及云硬盘挂载实操「建议收藏」本文主要介绍了linux磁盘分区fdisk命令,并详细介绍了服务器挂载云硬盘方法。

    2022年10月29日
  • 科研神器(高效开发工具)

    科研神器(高效开发工具)

  • 测试用例设计的八大要素「建议收藏」

    测试用例设计的八大要素「建议收藏」1、测试用例的八大要素用例编号和其他编号一样,测试用例编号是用来唯一识别测试用例的编号,要求具有易识别和易维护性,用户可以很容易根据用例编号获取到相应用例的目的和作用,在系统测试用例中,编号的一般格式为A-B-C-D这几部分的作用分别如下:A:产品或项目类型,如CMS(内容管理系统)、CRM(客户关系管理系统)B:一般用来说明用例的属性,如ST(系统测试)、IT(集成测试)、UT(单元测试)C:测试需求的表示,说明该用例针对的需求点,可包括测试项和测试子项等,如文档管理、客户投诉信息管理等。

  • 在pycharm中配置Anaconda的python工具包_anaconda pycharm环境配置

    在pycharm中配置Anaconda的python工具包_anaconda pycharm环境配置anacondaanaconda是一个工具包平台,里面有一系列Python编程过程中需要使用的工具包,安装了anaconda就相当于配置好了Python环境,不需要在额外安装一次Python,也不需要再一个个安装工具包,避免了从入门到放弃,anaconda的安装流程如下:首先下载anaconda安装包,可以直接在官网下载,anaconda下载地址根据自身需求下载合适的版本即可。下载完成后,双击安装程序点击next点击Iagree选择AllUsers选择自己的安装路径,点击nex

  • linux 查看磁盘空间大小

    linux 查看磁盘空间大小

发表回复

您的电子邮箱地址不会被公开。

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