您的位置:首页 > 其它

浅理解接口回调

2017-03-31 15:29 225 查看
     接口回调的目的就是实现类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类是运用这个对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  接口回调