今天讲讲android开发中比较常用的接口回调机制。
我自己对接口回调的理解就是:比如点击一个button的时候,如果你给button设置了一个监听器,即调用了方法:
btn.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
那么当我们点击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 =
new LogSomething();
logSomething.HD(
new IF_CB() {
@Override
public void doSomething(String str) {
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日志打印界面会成功的打印信息。当然,确实打印了,如下图所示:
源码就不给出了,因为代码量很少,我建议大家自己去思考,去总结,相信有一天你们也会豁然开朗的。因为我有过这种感觉,很奇妙,原先怎么都不理解的东西,突然有一天懂了,会感觉很爽。
每天进步一点点!加油!
转载请注明原文地址: https://ju.6miu.com/read-1300300.html