Android 中的回调函数揭秘

在学习Android的过程中,经常会遇到”回调函数”这个词,那么甚么是回调函数呢? 简单地说,回调函数就是通过其指针来调用的函数, 她不会被自己所在的对象调用, 只会在调用别人的方法的时候反过来被调用. 大家都知道,Android程序是通过java程序来实现的, java中是没有指针的, 因此在实现回调时都是通过接口和抽象类.
回调的过程可以简单的理解为,在A类中定义了一个方法,这个方法中用到了一个接口和该接口中的抽象方法,但是抽象方法 没有具体的实现, 需要B类去实现. 当B类实现该方法后, 它本身不会去调用这个方法. 而是传递给A类, 供A类去调用.这种机制就称为回调.
回调机制是将实现功能和定义分离的一种手段,市一中松耦合的设计思想. 接下来我们通过一段代码进行分析,具体如下:

  • (1).定义回调接口 ICallBack
    //声明一个接口
    public interface ICallBack{
       void postExec();
    }
  • (2).定义一个实现类 FooBar
    public void class  
{
    private ICallBack callback;
    public void setCallBack(ICallBack callBack){
       this.callBack = callback;
    }
    public void doSth(){
       callBack.postExec();
    }
    public static void main(String args[]){
       FootBar foo = new FootBar();
       foo.setCallBack(new ICallBack(){
         public void postExec(){
           Log.i("info","method executed!");
         }
       });
       foo.doSth();
    }
}

在上述代码中, 第一段代码定义了一个回调接口ICallBack, 该接口中有一个postExec()方法, 接受一个ICallBack参数, 然后再doSth()方法中进行调用,这就是一个后回调函数的基本用法.

在Android开发中,会懂啊函数使用非常广泛. 下面列举两个回调函数的使用场景, 让大家更加直观的看到回调函数是如何使用的.

应用场景一,事件监听器的回调

    Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new Button.OnclickListener(){
    //回调函数
    @override
    public void onClick(View view){
      //doSomeThing...
    }
});

上面的代码给按钮添加了一个事件监听器, 自己不会显示的去调用onClick()方法; 用户出发了该按钮的点击事件后,它会由Android系统来自动调用.

应用场景二:Activity生命周期中的回调

    @override
public void onCreate(Bundle saveInstanceState){
   super.oncreate(saveInstanceState);
   ...
}

@override
public void onResume(){
   super.onResume();
   ...
}

上面的代码是创建Activity时, 系统自带的onCreate()方法,该方法不会被认为的调用, 但它会在Android系统进程中自动调用.
好了,这就是关于Android中回调函数的介绍,我这里庙小,装不下大神,不喜勿喷哦!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值