android下的回调机制 分享

 

 

       回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。


回调机制在Android框架中的使用
  这里有几个例子:
  1、在Activity中定义了很多生命周期的不同状态要调用的方法,这些方法都是空实现,系统框架要调用,用户也要调用来实现。
    实例(对于Android界面上Button点击事件监听的模拟):
    a.定义接口

    public interface OnClickListener {
      public void OnClick(Button b);

                      }

    b. 定义Button
    

     public class Button {
      OnClickListener listener;
      public void click() {
        listener.OnClick(this);
      }
      public void setOnClickListener(OnClickListener listener) {
        this.listener = listener;
      }
     }

              c. 将接口对象OnClickListener 赋给 Button的接口成员
    

public class Activity {
      public Activity() {
      }
      public static void main(String[] args) {
        Button button = new Button();
        button.setOnClickListener(new OnClickListener(){
          @Override
          public void OnClick(Button b) {
            System.out.println("clicked");
          }
        });
        button.click(); //user click,System call button.click();
      }
    }

 

  2、在Activity中定义了很多生命周期的不同状态要调用的方法,这些方法都是空实现,系统框架要调用,用户也要调用来实现。
    实例(对于Android界面上Activity的模拟):
    a.定义接口

 

public interface Activity{
      public void onCreate();
      .....
      public void onDestory();
    }

    b. Activity接口的实现类MyActivity
    //定义一个类实现Activity接口
    

public calss MyActivity implements Activity{
      @Override//实现方法,简单输出
      public void onCreate(){
        System.out.println("onCereate");
      }
      .....
      @Override//实现方法,简单输出
      public void onDestory(){
        System.out.println("onDestory");
      }
    }

    c.系统运行环境类AndroidSystem

 //系统运行安装类
    public class AndroidSystem{
      //定义常量

      public static final int CREATE=1;
       ....
      public static final int DESTORY=2;
      //运行方法
      public void run(Activity a,int state){
        switch(state){
        case CREATE:
          a.onCreate;
          break;
        ....
        case DESTORY:
          a.onDestory();
          break;
        }
      }
    }


   
    d.测试类

     publilc class Test{
      public static void main(String[] args){
        //实例化AndroidSystem
        AndroidSystem system = new AndroidSystem();
        //实例化MyActivity
        Activity a = new MyActivity();
        system.run(a,AndroidSystem.CREAATE);
        ....
        system.run(a,AndroidSystem.DESTORY);
      }
    }


  以上可以看出,接口(系统框架)是系统提供的,接口的实现是用户实现的,这样可以达到接口统一,实现不同的效果。
  系统在不同的状态“回调”我们的实现类,来达到接口和实现的分类。

 

 

 个人理解: Class A  实现接口interface Callback重写起方法;   

                 实例化后传递给Class B 的函数使用,

                 Class B 的 方法method(Callback     c )  接受到此接口的实例 c,

                 在method中调用A 实现的callback的方法;

                       

                

 

 

转载于:

http://www.cnblogs.com/vtianyun/archive/2012/06/19/2555427.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值