美文网首页AndroidEventBus探索Android常用框架
Android框架之路——EventBus的使用

Android框架之路——EventBus的使用

作者: Mr丶sorrow | 来源:发表于2017-05-09 16:59 被阅读1282次

一、简介

EventBus是由greenrobot 组织贡献的一个Android事件发布/订阅轻量级框架。EventBus是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。比如请求网络,等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过EventBus实现。

官网地址:http://greenrobot.org/eventbus/
翻译:http://blog.csdn.net/poorkick/article/details/55099311
<p>

</p>
  • 发送粘性事件:

    • MainActivity中发送粘性事件;

        case R.id.send:
                EventBus.getDefault().postSticky(new MessageEvent("粘性事件", "urgent"));
                startActivity(new Intent(MainActivity.this, SecActivity.class));
                break;
      
    • SecActivity中接受注册并处理;

        public class SecActivity extends AppCompatActivity {
            @BindView(R.id.sendData)
            Button mSendData;
            @BindView(R.id.receive)
            Button mReceive;
            @BindView(R.id.tv_receive)
            TextView mTvReceive;
        
            @Override
            protected void onCreate(@Nullable Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_sec);
                ButterKnife.bind(this);
            }
        
            @OnClick({R.id.sendData, R.id.receive})
            public void onViewClicked(View view) {
                switch (view.getId()) {
                    case R.id.sendData:
                        //发送事件
                        EventBus.getDefault().post(new UserEvent("Mr.sorrow", "123456"));
                        finish();
                        break;
                    case R.id.receive:
                        //要接收时开始注册
                        EventBus.getDefault().register(SecActivity.this);
                        break;
                }
            }
        
            //处理事件逻辑
            @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
            public void receiveEventBus(MessageEvent messageEvent) {
                mTvReceive.setText(messageEvent.toString());
            }
        
            @Override
            protected void onDestroy() {
                super.onDestroy();
                //解注册
                EventBus.getDefault().removeAllStickyEvents();
                EventBus.getDefault().unregister(SecActivity.this);
            }
        }
      
    • 实现效果

      <p> </p>
  • 五、栗子下载

          源码链接

    相关文章

    网友评论

      本文标题:Android框架之路——EventBus的使用

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