Android 事件监听

2019-04-20  本文已影响0人  2019Say10

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");
            }
     });
上一篇下一篇

猜你喜欢

热点阅读