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