Android中的事件监听,监听某件事件是否触发,如果触发执行之后要进行操作.可以用于某个线程是否执行完毕和监听用户操作事件.
定义监听接口
创建一个接口,在接口中添加需要回调的方法
public interface MyEventListener {
void onTrigger();
}
设置监听事件
在EventTrigger事件执行后,设置监听触发.
public class MyEvent {
private MyEventListener myEventListener;
public void setMyEventListener(MyEventListener myEventListener) {
this.myEventListener = myEventListener;
}
public void eventTrigger() { //模拟事件触发
myEventListener.onTrigger(); //实现onTrgger方法时,调用接口中的onTrigger方法
}
}
实现监听
在onTrigger中写之后要进行的操作.
MyEvent myEvent=new MyEvent();
myEvent.setMyEventListener(new MyEventListener() {
@Override
public void onTrigger() {
Log.i("Test", "onTrigger: 事件触发了");
}
});
myEvent.eventTrigger();
如果在A类开启一个线程的时候,你并不知道线程什么时候会完成,你希望它完成后自动通知B对象,可以尝试使用接口回调。
定义一个接口,里面有onSuccess(),onFail()两个方法.
public interface Event {
void onSuccess();
void onFail();
}
定义一个线程模拟耗时操作,随机返回onSuccess()或onFail().
public class EventTask {
private Handler mhandle;
public void task(final Event event){
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);//模拟一个耗时线程
} catch (InterruptedException e) {
e.printStackTrace();
}
Message message=new Message();
message.what=1;
mhandle.sendMessage(message);
}
}).start();
mhandle=new Handler(){
@Override
public void handleMessage(Message msg){
switch (msg.what){
case 1:
//线程完成,触发回调
//随机返回onSuccess或onFail回调
int result=new Random().nextInt(10);
if(result>=5){
event.onSuccess();
}else{
event.onFail();
}
break; } } }; }}
获取接口回调.
EventTask et=new EventTask();
et.task(new Event() {
@Override
public void onSuccess() {
Log.i("Test", "onSuccess: success");
}
@Override
public void onFail() {
Log.i("Test","onFail: fail");
}
});
网友评论