EvevtBus

作者: 那个唐僧 | 来源:发表于2017-03-10 13:53 被阅读116次
    a.gif

    右边蓝色的哪里是back返回键,录gif的工具难产了.

    依赖

    compile 'org.greenrobot:eventbus:3.0.0'
    

    注册

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            EventBus.getDefault().register(this); //注册
    }
    

    取消注册

    @Override
        protected void onDestroy() {
            super.onDestroy();
            EventBus.getDefault().unregister(this); //取消注册
        }
    

    接收事件

         /**
         * @Subscribe 注解此方法为接收订阅事件
         * ThreadMode总共四个
         * threadMode = ThreadMode.MAIN  接收的订阅事件在主线程
         * threadMode = ThreadMode.BACKGROUND 后台线程
         * threadMode = ThreadMode.POSTING 和发布者处在同一个线程
         * threadMode = ThreadMode.ASYNC 异步线程
         * @param s 发布事件的消息,可以为任何对象.一般为bean类
         */
        @Subscribe(threadMode = ThreadMode.MAIN)
        public void helloEventBus(String s){
            mButton.setText(s);
        }
    

    发布事件

    public void click(View view) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        Thread.sleep(2000);
                        //发布事件,此时在订阅的方法中会第一时间接收到此事件
                        EventBus.getDefault().post("来吧,互相伤害吧.霍霍哈哈哈");
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
    
        }
    

    bean类的例子也很简单
    写出一个JavaBean,然后去发送这个bean类即可,然而在MVP模式中,貌似不需要这样的来传递请求回来的数据.
    在MVC中可以使用,非常方便
    在MVP中可以使用来传递跳转之间的数据传递或者代替广播使用,或者代替intent跳转,或者代替有返回值的activity之间跳转

    相关文章

      网友评论

          本文标题:EvevtBus

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