浅理解接口回调

来源:互联网 发布:捕鱼软件下载 编辑:程序博客网 时间:2024/06/05 21:17

     接口回调的目的就是实现类A的方法调用类B的方法,形式就是类A调用类B的方法,再在类B执行一些代码之后再调用类A的方法,这样就能类A运行类B的方法并且得到类B运行完返回的数据。

     也就是类A调用类B的methodB,再类B调用类A的methodA,其中methodB方法是你想执行的方法,methodA是 methodB执行很多很多操作之后 接受数据的方法。具体的实现流程就是类A集成一个interA接口 类A调用methodB方法 并且传入类A的对象,类B中用接口interA接着类A的对象  methodB执行一些操作后 接口对象.methodA 再在类A里面写 回调之后的操作     接口里面的方法methodA是准备返回的数据方法。

情形一:




public interface MyCallBack {    public void methodD(int myresult);}



package zhongchao.com.testduixiang;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import zhongchao.com.testduixiang.test.TestSomething;/** * Created by Administrator on 2017/3/31. */public class Main3Activity  extends AppCompatActivity implements MyCallBack{    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ClassB classB=new ClassB(Main3Activity.this);       classB.methodB();    }    @Override    public void methodD(int myresult) {        Log.w("inter","methodD:"+myresult);    }}



package zhongchao.com.testduixiang;import android.util.Log;/** * Created by Administrator on 2017/3/31. */public class ClassB {    private MyCallBack myCallBack;   private int myresult=100;    public ClassB(MyCallBack myCallBack) {        this.myCallBack = myCallBack;    }    public void methodB(){        Log.w("inter","这个是方法B");        myCallBack.methodD(myresult);    }}


结果:

03-31 15:21:53.180 25624-25624.testduixiang W/inter: 这个是方法B
03-31 15:21:53.190 25624-25624.testduixiang W/inter: methodD:100


情形二:



public interface MyCallBack {    public void methodD(int myresult);}


public class Main3Activity  extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ClassB classB=new ClassB(new MyCallBack() {            @Override            public void methodD(int myresult) {                Log.w("inter","methodD:   "+myresult);            }        });       classB.methodB();    }}


public class ClassB {    private MyCallBack myCallBack;   private int myresult=100;    public ClassB(MyCallBack myCallBack) {        this.myCallBack = myCallBack;    }    public void methodB(){        Log.w("inter","这个是方法B");        myCallBack.methodD(myresult);    }}

情形三




public interface MyCallBack {    public void methodD(int myresult);}
public class Main3Activity  extends AppCompatActivity implements MyCallBack{    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ClassB classB=new ClassB();       classB.methodB(Main3Activity.this);    }    @Override    public void methodD(int myresult) {        Log.w("inter","methodD:"+myresult);    }}
public class ClassB {   private int myresult=100;    public void methodB(MyCallBack myCallBack){        Log.w("inter","这个是方法B");        myCallBack.methodD(myresult);    }}

总结:

A类是正在运行的类,A类的任务是吧接口的实现类对象传到B类 B类是运用这个对象。

0 0
原创粉丝点击