您的位置:首页 > 移动开发 > Android开发

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

2016-08-15 14:28 405 查看
今天讲讲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中的按钮,如图所示:



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



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



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

每天进步一点点!加油!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息