android的回调机制

回调是一种双向调用模式,常用于处理异步操作的结果。在Android中,例如主线程不执行耗时任务,子线程处理完后通过回调将结果返回主线程。回调能避免重复代码,提高代码优雅性。具体实现包括定义接口,子类实现接口方法并由父类调用。参考简书和优快云博客可深入理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 头疼,看了一下午的java回调机制,不敢说懂了,只能说懂了怎么用,不过还有些问题,有想法的望大家多多指教。
 举个例子理解下回调:    

1、什么是回调
回调其实是一种双向调用模式,也就说调用方在接口被调用时也会调用对方的接口,听起来就很拗口,翻译翻译就是“实现了抽象类/接口 的实例实现了父类的提供的抽象方法后,将该方法交还给父类来处理”,主要要弄清楚一点,实现方法交还给提供接口的父类处理!

2、为什么要用回调
我们需要将普通物体的特性抽象出来,共性之中又有特性,每个不同的特性就需要交给特定的情况处理,通过暴露接口方法可以减少很多重复,代码更加优雅。

3、举个例子
我们知道,一般情况下主线程是不执行耗时任务的,如果遇到一些耗时任务(如网络请求,文件读写,数据库读写等等),我们会将其放入子线程中去执行,当执行完毕后,子线程再将执行结果返回给主线程。这个过程就是回调。

4、具体代码示范:

public class Fragment_shouye extends Fragment implements OnClickListener {
    【定义接口】 在类中定义一个Interface, 并在接口中定义一个抽象方法
//定义一个ZXQT接口
    public abstract  interface ZXQT{
        public abstract void onhide(int k);
    }
    【接口对象】在类中定义一个该接口的成员变量
//定义一个ZXQT接口类的对象
    ZXQT zxqt;
    }
    private void initView() {
    【设置对象】在类中定义一个公共方法,可以设置这个接口的对象,调用该方法给接口对象变量赋值,人家都是注释里面这么写的。
/*
* *public void setCallback(Callback callback) {    
* * this.mCallback = callback;    
* * }    
*/
//用(ZXQT)getActivity()方式竟然可以实现,我不太懂奥。
    zxqt=(ZXQT)getActivity();
    }

然后我在下面的地方调用了这个方法。

    zxqt.onhide(1);

在这个类的方法中实现了接口函数的具体方法

        @Override
    public void onhide(int k) {
        // TODO Auto-generated method stub
        if(k==1){
            LinearLayout imageView_back = (LinearLayout) this.findViewById(R.id.main_bottom);
            imageView_back.setVisibility(View.INVISIBLE);
            View line = (View) this.findViewById(R.id.line);
            line.setVisibility(View.INVISIBLE);
        }
    }

有一篇简书文档中理解的特别到位:
所谓的回调函数就是:在A类中定义了一个方法,这个方法中用到了一个接口和该接口中的抽象方法,但是抽象方法没有具体的实现,需要B类去实现,B类实现该方法后,它本身不会去调用该方法,而是传递给A类,供A类去调用,这种机制就称为回调。
http://www.jianshu.com/p/3f86b7949f20

具体参考博客:
http://blog.youkuaiyun.com/xsf50717/article/details/50520462
http://blog.youkuaiyun.com/xiaanming/article/details/8703708/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值