以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);
}
结果:
一般情况这里可以处理事情
这是回调方法,被执行了
其他事情异步执行