浅理解接口回调

     接口回调的目的就是实现类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类是运用这个对象。

猜你喜欢

转载自blog.csdn.net/chenshuaiforwork/article/details/68923589