android的回调机制
来源:互联网 发布:java windows相对路径 编辑:程序博客网 时间:2024/06/05 19:23
头疼,看了一下午的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.csdn.net/xsf50717/article/details/50520462
http://blog.csdn.net/xiaanming/article/details/8703708/
0 0
- Android的回调机制
- Android的回调机制
- android的回调机制
- Android 的回调机制
- Android回调机制的讨论
- Android回调机制的讨论
- Android回调机制的讨论
- Android回调机制的讨论
- android下的回调机制 分享
- Android View的onClick回调机制
- Android回调机制的理解
- java Android 回调机制的详解
- Android回调机制的讨论
- android下的回调机制 分享
- Android 接口的回调机制
- android回调机制的浅谈
- 对android 回调机制的总结
- Android监听事件的回调机制
- WAF攻防研究之四个层次Bypass WAF
- 五十道编程小题目 --- 09 完数 java
- The given object has a null identifier: cn.it.model.Category解决方案
- 第一期 前言 《路由器就是开发板》
- 逗号运算符
- android的回调机制
- Java 高级语言特性
- PHP的两个特性导致waf绕过注入(有趣的知识点)
- bash scp command not found的解决方法
- Difference Between ASP.NET Server Controls,HTML Server Controls and HTML Intrinsic Controls
- 线段树板子
- RecylerView基本用法
- 一道面试题的反思
- 虚方法