美文网首页
Android 事件监听

Android 事件监听

作者: 2019Say10 | 来源:发表于2019-04-20 10:04 被阅读0次

    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");
                }
         });
    

    相关文章

      网友评论

          本文标题:Android 事件监听

          本文链接:https://www.haomeiwen.com/subject/larkgqtx.html