當咱們進行項目開發的時候,每每是須要應用程序的各組件間進行通訊,好比在子線程中進行請求數據,當數據請求完畢後經過Handler或者是廣播通知UI,git
一般兩個Activity或者Fragment之家能夠經過Listener進行通訊等等。但當咱們的項目愈來愈複雜,使用Intent、Handler、Broadcast進行模塊間通訊時,代碼量大,並且高度耦合。而EventBus的出現就是爲了簡化各組件間的通訊,讓咱們的代碼書寫變得簡單,有效的分離事件發送方和接收方github
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; } }
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); } } }
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(); } }); } }
附上 EventBus Github地址微信
私人博客ide
技術微信公衆號:infree6 或者直接掃碼post