实现回调的两种形式
来源:互联网 发布:程序员考试下午真题 编辑:程序博客网 时间:2024/06/05 17:29
1、通过设置回调接口来调用回调方法
<span style="font-size:18px;">//定义回调接口public interface ICallBack{ void success(); void failed();}</span>
<span style="font-size:18px;">public class CallBackImpl{ // Local类 private ICallBack mCallBack; public void setCallBack(ICallBack callback){ <span style="color:#ff0000;">//通过设置回调接口,调用回调函数</span> tihs.mCallBack = callback; } public void execute(){ mCallBack.success(); //回调接口的函数可以放置到其他方法内或者其他位置 mCallBack.failed(); }}</span>
<span style="font-size:18px;">public class Test {public static void main(String[] args) {// TODO Auto-generated method stubLocal local = new Local();local.setCallBack(new ICallBack() {@Overridepublic void success() {// TODO Auto-generated method stubSystem.out.println("回调成功方法");}@Overridepublic void faild() {// TODO Auto-generated method stubSystem.out.println("回调失败方法");}});System.out.println("开始回调");local.exeuce(); <span style="color:#ff0000;"> //开始调用匿名的回调函数</span>System.out.println("回调方法结束!!");}}</span>
Test类后日志如下:
开始回调回调失败方法回调成功方法回调方法结束!!
2、通过设置其他类方法内的参数为回调接口,调用回调函数
public interface ICallBack {void success();void faild();}
public class Remote {public void excute(String message, ICallBack callBack) {try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}//回调对象内的方法callBack.success();callBack.faild();}}
public class ProCallback implements ICallBack,Runnable {private Remote mRemote;private String mMessage;public ProCallback(String message,Remote remote){this.mRemote=remote;this.mMessage= message;}public void beginCallBack(){Thread thread = new Thread(this);thread.start();System.out.println("回调开始后主线程"+Thread.currentThread().getName());}@Overridepublic void success() {// TODO Auto-generated method stubSystem.out.println("回调成功方法");}@Overridepublic void faild() {// TODO Auto-generated method stubSystem.out.println("回调失败方法");}@Overridepublic void run() {// TODO Auto-generated method stubSystem.out.println("开始回调,子线程"+Thread.currentThread().getName());mRemote.excute(mMessage, this);}}
public class CallBackTest {public static void main(String[] args) {// TODO Auto-generated method stubRemote remote = new Remote();ProCallback callback = new ProCallback("消息信息", remote);System.out.println("开始回调");callback.beginCallBack();System.out.println("回调结束");}}日志如下:
开始回调回调开始后主线程main开始回调,子线程Thread-0回调结束回调成功方法回调失败方法
1 0
- 实现回调的两种形式
- 归并排序的两种实现形式
- 线程的两种实现形式
- 堆栈的两种实现形式:数组和链表
- 单例的两种实现形式模式
- 斐波那契数列的两种实现形式
- 两种形式的dma 实现memory copy代码
- Java Timer组件的两种实现形式
- UIActivityIndicatorView的两种形式
- UIActivityIndicatorView的两种形式
- UIActivityIndicatorView的两种形式
- UIActivityIndicatorView的两种形式
- UIActivityIndicatorView的两种形式
- split 的两种形式
- UIActivityIndicatorView的两种形式
- #include的两种形式
- UIActivityIndicatorView的两种形式
- UIActivityIndicatorView的两种形式
- alert 换行
- kill命令使用
- viewpager 左右滑动笔记
- 解释器模式
- Android-Tips(实用Android开发技巧)
- 实现回调的两种形式
- matlab 3D绘图详解
- Android: 解决GridView、ListView在ScrollView中出现冲突的问题 ——诺诺"涂鸦"记忆
- seq 工具介绍
- Pandas 结构化数据(上)
- 柳峰微信公众平台开发教程企业号修改篇(企业菜单篇)
- Java反射之内部类
- androird 优秀新闻github
- ios调用百度、高德地图 导航功能