Android-->回调(interface/abstract)的用法(通俗易懂)
来源:互联网 发布:网络游戏排行榜 知乎 编辑:程序博客网 时间:2024/05/02 04:18
使用场景
小明想要问小红借10块钱,小红答应借. 但是小红很关心小明还钱,因为小红想要在小明还钱之后,去买好吃的蛋糕.
这个时候, 小红又不能时时刻刻催着小明还钱. 只能等小明还钱的时候通知小红了;
那么, 小明通知小红的这个过程, 我把它叫做 回调;
回调本质:你给我一个篮子,我把篮子装满给你。
上代码(Interface部分):
1:首先定义个 还钱的回调接口
public interface OnRepay{ boolean onRepay();}
2:因为是小明还钱, 所以在小明(XiaoMing)类中,调用接口方法,进行还钱
//小明, 用来借钱的类, 同时也是调用回调函数的类public class XiaoMing { OnRepay XiaoHong;// 小红 public XiaoMing(OnRepay listener) { this.XiaoHong = listener; } // 小明借钱的方法 public void JieQian() { Log.e("小明", "小明借了小红10块钱,小明说:\"不要着急, 还钱的时候,我会告诉你.\""); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } // 过了一会儿, 小明要还钱了,这个时候要通知小红. 通知的方式,就用到了回调 if (XiaoHong.onRepay()) {// 告诉小红, 小明还钱了; //如果小红收到小明还的10块钱; Log.e("小红", "谢谢的还钱,我已经收到"); }else { //如果小红没有收到10块钱(可能路上被强盗抢了),那么.... Log.e("小红", "小明还我的钱,我没有收到,可能被快递员私吞了, 请再还一次"); } }}
3:因为小红想要知道还钱的结果,所以小红需要实现这个接口方法
public class MainActivity extends Activity implements OnRepay { XiaoMing XiaoMing; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); XiaoMing = new XiaoMing(this); } @Override public boolean onRepay() {// 小明还钱的时候,小红接收, 返回true:收到了钱, 返回false:没收收到 Log.e("小红", "小红没有收到小明的还钱,可能被快递员私吞了..."); return false; }}
4:OK,步骤完成了,就差启动 小明借钱了;
//这个方法放在MainActivity中public void button1(View view) { XiaoMing.JieQian();}/**对应的Button声明<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="button1" android:text="Interface回调" />*/
上代码(abstract部分):
1:声明借钱的过程(和interface类似)
public abstract class OnRepayCallback { abstract boolean onRepayCallBack();}
2:实现小明的借钱方法
public void JieQianCallback(OnRepayCallback callback){ Log.e("小明", "小明借了小红10块钱,小明说:\"不要着急, 还钱的时候,我会告诉你.\""); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } // 过了一会儿, 小明要还钱了,这个时候要通知小红. 通知的方式,就用到了回调 if (callback.onRepayCallBack()) {// 告诉小红, 小明还钱了; //如果小红收到小明还的10块钱; Log.e("小红", "谢谢的还钱,我已经收到"); }else { //如果小红没有收到10块钱(可能路上被强盗抢了),那么.... Log.e("小红", "小明还我的钱,我没有收到,可能被快递员私吞了, 请再还一次"); } }
3:小红借钱给小明,并且处理小明还钱的结果
public class MainActivity extends Activity implements OnRepay { XiaoMing XiaoMing; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); XiaoMing = new XiaoMing(this); } /**对应的Button声明 <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="button2" android:text="Abstract回调" /> */ public void button2(View view) { XiaoMing.JieQianCallback(new OnRepayCallback() { @Override boolean onRepayCallBack() { Log.e("小红", "小红收到小明的还钱10元..."); return true; } }); }}
总结一下:
Interface 和 Abstract, 目的都是实现回调, 选择的时候可以任意选一种, 你熟练就行;
区别:
Interface 定义的方法都不能有方法体,而 Abstract可以定义有方法体的方法;
源码demo下载: http://download.csdn.net/detail/angcyo/8783907
至此: 文章就结束了,如有疑问: QQ群:274306954 欢迎您的加入.
0 0
- Android-->回调(interface/abstract)的用法(通俗易懂)
- Android-->回调(interface/abstract)的用法(通俗易懂)
- Interface和abstract的用法
- Android笔记:详解接口回调(interface/abstract)的用法
- 关于Interface 和 Abstract的用法
- Abstract Class 和 Interface用法
- C#的static,interface,virtual,abstract,override的区别用法
- C#-base-new-sealed-abstract-interface的用法:
- C#-base-new-sealed-abstract-interface的用法
- C#中的static,interface,virtual,abstract,override的用法
- C#中的static,interface,virtual,abstract,override的用法
- C#中的static,interface,virtual,abstract,override的用法
- C#中的static,interface,virtual,abstract,override的用法
- C#中的static,interface,virtual,abstract,override的用法
- C# abstract virtual interface的区别(付static、override用法)
- JAVA的abstract修饰符 && 接口interface用法
- Java之抽象(abstract)类、接口(interface)的用法总结
- 06.(java基础)面试题--03 abstract的用法,以及abstract和interface的异同
- javascript继承机制的设计思想
- SSL多域名绑定证书的解决方案
- android工具收藏
- 支付宝集成获取私钥与公钥【原创】
- mpandroidchart地址
- Android-->回调(interface/abstract)的用法(通俗易懂)
- linux下实时查看tomcat运行日志
- IE浏览器怎样禁用js(javascript)
- c++ dll创建及使用 rundll32 测试
- JAVA服务器端获取客户端远程地址,根据IP获取远程地址,各IP地址查询接口比较
- 安卓面试题
- [伪]观察者设计模式(适用于像我这样看不太懂真正的观察者设计模式又想用观察者设计模式的小程序员)
- Jenkins进阶系列之——13修改Jenkins权限控制
- Kinect深度图与摄像头RGB的标定与配