EventBus的基本使用步骤
为什么要使用EventBus
当我们进行项目开发的时候,往往是需要应用程序的各组件间进行通信,比如在子线程中进行请求数据,当数据请求完毕后通过Handler或者是广播通知UI,
通常两个Activity或者Fragment之家可以通过Listener进行通信等等。但当我们的项目越来越复杂,使用Intent、Handler、Broadcast进行模块间通信时,代码量大,而且高度耦合。而EventBus的出现就是为了简化各组件间的通信,让我们的代码书写变得简单,有效的分离事件发送方和接收方
EventBus的基本使用步骤:
第一步:添加依赖
compile 'org.greenrobot:eventbus:3.0.0'
第二步:定义消息事件类
public class MessageEvent{ private String message; public MessageEvent(String message){ this.message=message; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
第三步:注册和解除注册 (在FirstActivity的onCreate()方法和onDestory()方法里,进行注册EventBus和解除注册。该Activity用于接收事件)
public class FirstActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.first_activity); //注册 EventBus.getDefault().register(this); } //接收消息 @Subscribe(threadMode = ThreadMode.MAIN) public void Event(MessageEvent messageEvent) { mText.setText(messageEvent.getMessage()); } @Override protected void onDestroy() { super.onDestroy(); //解除注册 if(EventBus.getDefault().isRegistered(this)) { EventBus.getDefault().unregister(this); } } }
第四步:发送消息事件 (在SecondActivity里去进行事件的发送)。
public class SecondActivity extends AppCompatActivity { private Button mButton2; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second_activity); mButton2=(Button) findViewById(R.id.btn2); mButton2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //发送消息 EventBus.getDefault().post(new MessageEvent("欢迎大家浏览我写的博客")); finish(); } }); } }
最后
关于我
技术微信公众号:infree6 或者直接扫码