初识java接口回调机制与androidView的触发事件回调

回调:

概念网上各大blog都有说,这里我就不说了,直接说理解吧。

一、建模

我理解的接口回调就是,我这个类实现了一个接口里的方法doSomething,然后注册到你这里,然后我就去做别的事情去了,你在某个触发的时机回头来调用我doSomething的方法。好比,我给你打电话问某个难题,你电话里想不出来,于是说等想到了再回我电话。于是接口回调机制比喻模型如下


Android中:好比你的Button点击之后会直接调用你写重写的Onclick(),为什么?

那是因为很多系统的类你理解的不是很好,需要看源码。

首先我们用匿名类的形式重写View.OnClickListenner(){

public void onclick(){

//dosomething

};

然后把这个接口的对象通过SetonClickListenner传给View类,当点击时,会调用view类的
public boolean callOnClick() {
        ListenerInfo li = mListenerInfo;//就是你传过来的onclickListenner对象
        if (li != null && li.mOnClickListener != null) {
            li.mOnClickListener.onClick(this);
            return true;
        }
        return false;
    }

调用你写的onclick方法

二:抽象使用


1:第一步在类A中重写接口方法
2:第二步传接口的对象给类B
3:当类B到触发条件时,执行类A接口中的方法(回调)

三:实战

1:在Me类中,匿名类形式实例接口并重写方法

public class Me{

 public static void main(String[] args){
  //我有个问题要问你
  System.out.println("ME:问你个问题。。。");
  You you = new You();
  you.setcallback(new callback() {  
   @Override
   public void oncallback() {
    // TODO Auto-generated method stub
    System.out.println("ME:谢谢你通知我,我要做事了");
   }
  });
  
 }
}

2:通过setListenner把callback的传递过去 见上面

3:在类YOU中使用callback的oncallback方法

public class You {
 callback mcalCallback;
 public void  setcallback(callback mCallback){
  this.mcalCallback = mCallback;
  System.out.println("YOU:收到你的问题了。。。等5秒告诉你");
  new Thread(){
   @Override
   public void run() {
    // TODO Auto-generated method stub
    super.run();
    try {
     Thread.sleep(5000);
     System.out.println("YOU:告诉你了。。。");
     mcalCallback.oncallback();
    } catch (InterruptedException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  }.start();
  
 }
 
}

4:测试结果如下
ME:问你个问题。。。
YOU:收到你的问题了。。。等5秒告诉你
ME:谢谢你通知我,我要做事了

暂时java的接口回调就研究在这里。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值