其实,callback 机制在Android 中无处不在,特别是以Handler、Callback、Listener这三个词结尾的,都是利用callback机制来实现的。比如点击事件onClickListener就是一个已经封装好的callback案例:


tv.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub}});


对于callback的概念及意义,维基百科是这么解释:将一段代码作为参数传递,而这段代码将会在某个时刻被执行;

   个人理解就是:为了代码整洁;为了方便调用并执行一些不在同一个java文件中的变量和函数;为了便于对外留出接口,便于后期添加新功能;   

自己也写了一个比较简单的Demo如下:

/** * @author Kern * @data 2015-6-12下午4:21:29 * @TODO callback 首先:定义一个interface 包含一个或者多个没有方法体的回调方法 */public class MainActivity extends ActionBarActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// TextView tv = (TextView) findViewById(R.id.tv);// tv.setOnClickListener(new OnClickListener() {//// @Override// public void onClick(View v) {// // TODO Auto-generated method stub//// }// });Utils utils = new Utils();utils.execu(new ContrlListener() {@Overridepublic void contrl(String str) {// TODO Auto-generated method stubLog.e("sos", str);}});}//定义接口public interface ContrlListener {public void contrl(String str);}}

这里:接口ContrlListener中的方法 contrl(String str);没有方法体,后期维护中,需要新增功能时,就可以直接复写control函数,方法体中调用自己新增的功能实现代码就OK了。


/** * @author Kern * @data 2015-6-12下午5:07:21 * @TODO   第二步:获取接口对象,通过对象调用方法, *  */public class Utils {ContrlListener listener;public void execu(ContrlListener listener) {this.listener = listener;new MyThread().start();}class MyThread extends Thread {@Overridepublic void run() {// TODO Auto-generated method stubsuper.run();try {Thread.sleep(5000);for (int i = 0; i < 10; i++) {listener.contrl("电话正在接通中----" + i + 1);Thread.sleep(3000);}listener.contrl("hello,你哪位?");} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}


                                                                                                  

更多相关文章

  1. 【Android】Android清除本地数据缓存代码
  2. 在Android中实现全屏显示的方法
  3. Mac完整卸载Android Studio的方法
  4. 【Android】Android处理Home键方法小结
  5. Android常用方法——获取系统信息
  6. 查看Android ADT Plugin版本的方法
  7. Android DEX 方法超过64K限制
  8. CyanogenMod开源代码

随机推荐

  1. Android平台上的高性能编程
  2. Android网络编程——https 不验证证书方
  3. [译文]移动应用开发,第1部分:在Android上应
  4. Android无法自动创建以usb开头的节点
  5. Android 3 使用 smartTable 表格工具 实
  6. [置顶] Android 的媒体路由功能应用与框
  7. Android 滑动切换页面 以及屏幕手势
  8. 在线自动生成.9png图的Android设计切图工
  9. Android花样loading进度条(四)-渐变色环形
  10. Android多分辨率多屏幕密度下UI适配方案