以Android的OnClick事件进行模拟

OnClickListener

public interface OnClickListener {
    public void onClick(View v);
}

View

/**
 * view 总接口
 * 
 * @author root
 *
 */
public interface View {
    public void setOnCLickListener(OnClickListener listener);
}

Activity

/**
 * 模拟Activity
 * 
 * @author root
 *
 */
public class MyActivity implements OnClickListener {

    private Button btn;

    public MyActivity(Button btn) {
        this.btn = btn;
    }

    public void doSomthing() {
        System.out.println("其他任务,需要Button点击");
        btn.setOnCLickListener(this);
    }

    @Override
    public void onClick(View v) {
        System.out.println("这是回调方法,被执行了");
    }

}

Button

/**
 * Button组件
 * 
 * @author root
 *
 */
public class Button implements View {

    @Override
    public void setOnCLickListener(OnClickListener listener) {
        System.out.println("一般情况这里可以处理事情");
        listener.onClick(this);
    }

}

Test

public class Test {
    public static void main(String[] args) {
        Button btn = new Button();
        MyActivity activity = new MyActivity(btn);
        activity.doSomthing();
    }
}

结果

其他任务,需要Button点击
一般情况这里可以处理事情
这是回调方法,被执行了

异步回调

我的理解是修改Activity的doSomething方法:

public void doSomthing() {
        // 同步回调
        // System.out.println("其他任务,需要Button点击");
        // 异步回调
        new Thread(new Runnable() {

            @Override
            public void run() {
                try {
                    TimeUnit.MILLISECONDS.sleep(2);
                    System.out.println("其他事情异步执行");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();
        btn.setOnCLickListener(this);
    }

结果:

一般情况这里可以处理事情
这是回调方法,被执行了
其他事情异步执行

results matching ""

    No results matching ""