java回调的示例

/**
* 回调的思想是:
* 类A的a()方法调用类B的b()方法
* 类B的b()方法执行完毕主动调用类A的callback()方法
*/

//第一步:定义监听接口
public interface OnFinishListener {
    /**
     * @param string 执行完后,要传递的结果
     */
    void onFinish(String string);
}
public class B {

    //第二步:实例化接口,并设置监听方法(在同一类中)
    private OnFinishListener onFinishListener;
    public void setOnFinishListener(OnFinishListener listener) {
        this.onFinishListener = listener;
    }

    //第三步:B正在努力的寻找答案(在同一类中)
    public void fetch() {
        for (int i = 0; i < 100; i++) {
            Log.e("打印:", i + "");
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        String string = "正常结果";
        if (onFinishListener != null) {
            onFinishListener.onFinish(string);
        }
    }
}
public class A extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final B b = new B();

        //A提问B
        new Thread(new Runnable() {
            @Override
            public void run() {
                b.fetch();
            }
        }).start();

        //A设置监听,监听B的答案
        b.setOnFinishListener(new OnFinishListener() {
            @Override
            public void onFinish(String string) {
                Log.e("最后的打印:", string + "=========");
            }
        });
    }
}

参考文章:https://www.cnblogs.com/xrq730/p/6424471.html

你可能感兴趣的:(JavaSE)