Android技术开发之接口回调机制总结

今天讲讲android开发中比较常用的接口回调机制。


我自己对接口回调的理解就是:比如点击一个button的时候,如果你给button设置了一个监听器,即调用了方法:

btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

            }
        });

那么当我们点击button后就会回调OnClickListener接口的onClick()方法。我们可以在该方法里做你想做的操作,点击button后,该操作就会执行。很明显,button的点击事件其实就是一个简单的回调机制事件的体现。


还有很多其他的回调事件无时无刻都在发生着,比如你由一个Activity跳转到另一个Activity,那么这两个Activity的生命周期方法其实都是回调机制的体现。如果你还不理解的话,举个例子。
假如活动A中有个按钮,点击A中的按钮可以跳转到活动B,那么这时候活动A就会回调Activity生命周期方法中的:onPause()、onStop()方法,如果再由B返回A,那么A中就会回调生命周期方法中的:onRestart()、onStart()、onResume()方法。
在我们的与应用中,还有很多这样的体现。下面开始实际的接口回调的实现过程。


  • 首先你需要创建一个接口,这里我命名为:IF_CB,类如下所示:
package com.example.circleimageviewtest;
/**
 * 回调接口,声明一个抽象方法,方法具体实现在回调类里面实现
 * @author Administrator
 *
 */
public interface IF_CB {
    // 抽象方法,不作具体实现,具体实现在回调类里重写的方法里面实现
    void doSomething(String str);
}
  • 然后点击活动A中的按钮,这时候就在这里做回调操作,代码如下:
/**
         * btn是按钮控件
         */
        btn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // 创建LogSomething对象
                LogSomething logSomething  = new LogSomething();
                // 调用LogSomething对象的HD()方法,在这里做回调
                // 因为HD()方法里new了一个接口对象,所以要重写接口里的抽象方法,
                // 在该方法中做你想要的操作
                logSomething.HD(new IF_CB() {
                    @Override
                    public void doSomething(String str) {
                        // TODO Auto-generated method stub
                        Log.e("回调机制实现-->", str);
                    }
                });
            }
        });
  • 上面按钮点击事件我用到了LogSomething这个类,该类里面有有方法HD()可以供回调类调用。代码如下所示:
package com.example.circleimageviewtest;


public class LogSomething {

    /**
     * 该类主要是用来供回调类实现回调的方法类
     * @param call_Back
     */
    public void HD(IF_CB call_Back){
        if(call_Back != null){
            // 如果接口对象不为空,那么调用接口的抽象方法,具体实现还是在回调类里面
            call_Back.doSomething("success!");
        }
    }


}
  • 上面的操作做完后就可以运行你的项目了,点击一下活动A中的按钮,如图所示:

Android技术开发之接口回调机制总结_第1张图片


  • 因为我在回调类里面,用打印日志的方法来体现回调机制,如图所示:

Android技术开发之接口回调机制总结_第2张图片


  • 所以点击按钮后,回调成功的话,我的LogCat日志打印界面会成功的打印信息。当然,确实打印了,如下图所示:

Android技术开发之接口回调机制总结_第3张图片


源码就不给出了,因为代码量很少,我建议大家自己去思考,去总结,相信有一天你们也会豁然开朗的。因为我有过这种感觉,很奇妙,原先怎么都不理解的东西,突然有一天懂了,会感觉很爽。


每天进步一点点!加油!

你可能感兴趣的:(安卓开发技术学习)