美文网首页程序员
结合OnClickListener源码讲解Java回调机制

结合OnClickListener源码讲解Java回调机制

作者: 刘岳森 | 来源:发表于2018-10-11 22:10 被阅读88次

解决问题

举这样一个例子,你的老板让你帮他抢一张周杰伦演唱会的门票,但是你现在屁股后面还有一大堆事情要做,你不可能去售票处一直等着排队买票,所以这个时候你就委托一个人去给你买票,等他买好了票他通知你来取票就可以了。

在这个例子当中你就是用户,你的委托人告诉你票买好了,就是回调,简单的来讲就是你把一个任务交给其他人去做,当任务完成的时候他告诉你,这个过程就叫做回调
回调主要用于处理异步消息传递

结合代码讲解

接口类,用于定义

public interface CallBack
{
     public void giveMe(int result);
}

具体实现类

public class Buyer
{
    CallBack callBack;
    public void toldBuyer(CallBack callback){
        this.callback = callback;
     }
     
     public void doThings(){
         //巴拉巴拉,做他该做的事情去,
         noticeMe(result);
     }

    private void noticeMe(T result)
    {
        callBack.giveMe(result);
    }
}

使用的类

public class Me
{
    public void callHelp ()
    {
        new Buyer().toldBuyer(new CallBack(){
           @Override
           public void giveMe( int result)
           {
               System.out.println(name + "求助小红计算:" + a + " + " + b + " = " + result);
           }
        });
    }
}

在这个例子当中,我是使用者,Callback相当于是我要做的事情,Buyer是我委托给的那个人
我要做的事情就是通过匿名内部类CallBack的方式把buyer买到票之后要干的事情告诉他,然后buyer里存了一个CallBack的对象,这个对象里有我要让他干什么,之后当buyer做完事情之后,调用他的noticeMe方法,来通知我,他做完了,并且这个时候采取做我让他做的事情,这样就不需要我去傻等着了,

结合OnClickListener讲解

下面这个类相当于上面的CallBack这个类,只存着在被点击之后要干什么

    public interface OnClickListener {
        /**
         * Called when a view has been clicked.
         *
         * @param v The view that was clicked.
         */
        void onClick(View v);
    }

下面这个是具体使用的时候相当于上面的Me,

public class TestA implements View.OnClickListener {
   
    button.setOnClickListener(this);
    /**
     * Called when a view has been clicked.
     *
     * @param v The view that was clicked.
     */
    @Override
    public void onClick(View v) {//这里相当于我上面的giveMe方法
        switch (v.getId()){
            case R.id.test1:
                //BALBALA
                break;
            case
            ...
        }
    }

setOnClickListener方法相当于上面的toldBuyer方法,告诉他他要做什么,这里省略了监听的代码,监听代码相当于上面的buy部分的代码,并且省略了,回调的那个方法

public void setOnClickListener(OnClickListener l) {
        if (!isClickable()) {
            setClickable(true);
        }
        getListenerInfo().mOnClickListener = l;//一个view组件含多个Listener监听器,这个只赋值click,其他的还有OnFocusChangeListener、OnLongClickListener等
 
    }

相关文章

  • 结合OnClickListener源码讲解Java回调机制

    解决问题 举这样一个例子,你的老板让你帮他抢一张周杰伦演唱会的门票,但是你现在屁股后面还有一大堆事情要做,你不可能...

  • Thinging in Java阅读时遇到的问题

    菜鸟教程Java回调机制解读Java回调机制总结内部类标识符JAVA foreach和普通for循环是否需要判断为...

  • Java相关博客推荐阅读--Java回调机制

    Java回调机制 这篇文章循循渐进的介绍了什么是Java回调机制,以及在Java中的简单实现。通过形象生动的例子,...

  • Java基础9:解读Java回调机制

    本文主要介绍了Java中的回调机制,以及Java多线程中类似回调的机制。 具体代码在我的GitHub中可以找到 h...

  • java接口回调机制

    转载的正文 地址--理解java接口回调机制

  • java回调机制

    回调的基本概念 在java中,我们可以将回调简单理解为:类A中的a方法调用类B中的b方法,而类B的b方法有反过来调...

  • java回调机制

    java的调用机制主要分为同步调用、异步调用、回调这三种,当然也包括一些其它的,例如异步回调等。 同步调用是我们平...

  • Java回调机制

     回调是一种设计模式,应用场景:即为了避免阻塞,新开线程去执行任务,当新开的线程把任务执行完毕,需要返回通知结果。...

  • Java回调机制

    最近一直在想罗振宇老师说的一段话,大致如下:任何一个行业都有自己的独特性,你要是能将自己行业独有的认知模型用质朴的...

  • Java 回调机制

    参考链接 Java回调机制解读 回调的思想 类A的a()方法调用类B的b()方法 类B的b()方法执行完毕主动调用...

网友评论

    本文标题:结合OnClickListener源码讲解Java回调机制

    本文链接:https://www.haomeiwen.com/subject/rpviaftx.html