美文网首页android
浅谈Android的回调机制 看不懂打我

浅谈Android的回调机制 看不懂打我

作者: CZ_WL | 来源:发表于2020-03-30 21:08 被阅读0次

整篇都将使用例子来讲 看懂例子的注释即可,分为三个例子大同小异 看懂一个可以作类比,要理解深刻还是要自己敲一遍/。/

一、以点外卖为例 客人在外卖软件上点菜 好吃又好玩(≧▽≦)
public interface ICallBack{//商家0提供的接口(顾客可以在这点自己想吃的菜)
    //回调函数
    void postExecute();    //商家0提供的下单功能(给顾客使用)
}
public interface ICallBack1{//商家1
    void postExecute();
}

public class EatWhat { //饿了么软件 专门给商家和顾客提供回调的场景,实际是系统提供给
                       //用户使用的
    private ICallBack callBack;  //商家0的店
    private ICallBack1 callBack1;//商家1的店
    public void setCallBack(ICallBack callBack){//通过饿了么找到对应的商家                                     
         this.callBack=callBack;                      //由顾客来实现            
    }
     public void setCallBack1(ICallBack1 callBack1){//同上
        this.callBack1=callBack1;
    }

    public void eatSth(){         //饿了么将顾客的单子给商家去实现
          if(callBack!=null){
            callBack.postExecute();
        }
        if(callBack1!=null){
            callBack1.postExecute();
        }       
                        }                                                                                                                                                                                                                                


}

public class Test{   //具体的回调场景:顾客-->打开饿了么-->打开对应商家-->填写订单
                                  //  -->通过饿了么将顾客的回调函数给商家去执行(执行订单)
     public static void main(String...args){
//现在有一个顾客在家呆着 不能出去 需要吃饭,于是客人(new 一个)打开饿了么 
        EatWhat eatWhat=new EatWhat();

        eatWhat.setCallBack(new ICallBack1() {//顾客喜欢商店1并同时接写好了订单内容,
                                          //  
            @Override
            public void postExecute() {
           System.out.println("我已经想好了 我要吃你家的辣椒炒肉");//填写订单信息
            }
        });
        //确认订单  此时调用eatSth()是会调用顾客自己实现的回调方法即--->要吃辣椒炒肉
        eatWhat.eatSth();

    }
}

商家具体逻辑

  1. :商家暴露对应的下单功能:postExecute();
  2. :饿了么软件上提供商家的成员变量

顾客具体逻辑

  1. 打开软件:new EatWhat();
  2. 点开具体商家并同时写下自己的订单信息:setCallBack(new ICallBack1(){ .. });
  1. 顾客通过饿了么提交订单eatWhat.eatSth();

看到这里再深入思考一下:

回调函数:
说白了还是函数的使用 函数的使用说具体点 就要扯到函数指针,而在不同的函数 得到指针的方法不同,上面的例子就是通过setCallBack(new CallBack(){})来实现给指针赋值,实现了调用函数的功能。

二、现在再看以下android里面的回调,会不会很熟悉了呢,一样看代码
  public interface OnClickListener {
  
        void onClick(View v);
    }
 public void setOnClickListener( OnClickListener l) {
        if (!isClickable()) {
            setClickable(true);
        }
        getListenerInfo().mOnClickListener = l; //将自己实现的监听者加入监听者数组中
    }

public class MainActivity extends AppCompatActivity {
    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button=findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() { //给指针赋值
            @Override
            public void onClick(View v) {
                System.out.println("我要吃辣椒炒肉");
            }
        });
    }
}

对比两个代码第二个会发现少了实现 其实当我们点击按钮时,系统已经帮我们实现了点击事件,不然怎么会叫做监听呢。

后续还会完善 如有不足 多多包涵!

相关文章

  • 浅谈Android的回调机制 看不懂打我

    整篇都将使用例子来讲 看懂例子的注释即可,分为三个例子大同小异 看懂一个可以作类比,要理解深刻还是要自己敲一遍/。...

  • Android回调机制浅谈

    参考博客如下http://blog.csdn.net/xiaanming/article/details/8703...

  • 带你了解Android接口回调机制

    Android接口回调机制 接口回调是在Android中运用广泛的一种机制,你一定会眼熟它,接下来,我们从两个方面...

  • Android 回调机制

    今天无意中看到了说java的回调机制,我感觉就和我以前用过的一样啊。。。所以就记录下来。。。 说说怎么接触到回调的...

  • android 回调

    在Android开发中我们很多地方都用到了方法的回调,回调就是把方法的定义和功能导入实现分开的一种机制,目的是为了...

  • Android中接口回调/方法回调

    在android开发中我们很多地方都用到了方法的回调,回调就是把方法的定义和功能导入实现分开的一种机制,目的是为了...

  • 通过Anroid onClick函数理解JAVA回调机制

    本文通过介绍Android事件监听机制来了解下Java的回调机制,即当你点击一个button的时候发生了什么,点击...

  • android回调机制(附源码)

    1.回调的用处 1.要实现一个回调,一般需要三个类: 定义接口类、实现接口类、设置触发接口类;2.在android...

  • 浅谈Java 中回调机制的原理

    模块之间总是存在这一定的接口,从调用方式上看,可以分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,也...

  • 回调机制

    故事:老师提问: 1+1= ?学生: 开始进行计算。学生给出答案并告诉老师,老师宣布答案。 老师调用学生,学生...

网友评论

    本文标题:浅谈Android的回调机制 看不懂打我

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