谁接收消息谁就注册解注册
// eventbus
public class EventBusActivity extends Activity {
private TextView tv_title;
private Button bt_eventbus_send;
private Button bt_eventbus_sticky;
private TextView tv_eventbus_result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_event_bus);
initView();
initData();
initListener();
}
private void initListener() {
// 跳转到发送页面
bt_eventbus_send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(EventBusActivity.this, EventBusSendActivity.class);
startActivity(intent);
}
});
// 发送粘性事件到发送页面
bt_eventbus_sticky.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 2 发送粘性事件
EventBus.getDefault().postSticky(new StickyEvent("我是粘性事件"));
// 跳转到发送数据页面
Intent intent = new Intent(EventBusActivity.this, EventBusSendActivity.class);
startActivity(intent);
}
});
}
private void initData() {
tv_title.setText("EventBus");
// 1注册广播
EventBus.getDefault().register(EventBusActivity.this);
}
private void initView() {
tv_title = (TextView)findViewById(R.id.tv_title);
bt_eventbus_send = (Button)findViewById(R.id.bt_eventbus_send);
bt_eventbus_sticky = (Button)findViewById(R.id.bt_eventbus_sticky);
tv_eventbus_result = (TextView)findViewById(R.id.tv_eventbus_result);
}
// 5接收消息
@Subscribe(threadMode = ThreadMode.MAIN)
public void MesssageEventBus(MessageEvent event){
// 显示接收的消息
tv_eventbus_result.setText(event.name);
}
@Override
protected void onDestroy() {
super.onDestroy();
// 2 解注册
EventBus.getDefault().unregister(EventBusActivity.this);
}
}
// eventbus的发送数据页面
public class EventBusSendActivity extends Activity {
private TextView tv_title;
private Button bt_eventbus_send_main;
private Button bt_eventbus_send_sticky;
private TextView tv_eventbus_send_result;
boolean isFirstFlag = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_event_bus_send);
initView();
initData();
initListener();
}
private void initListener() {
// 主线程发送数据按钮点击事件处理
bt_eventbus_send_main.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 4 发送消息
EventBus.getDefault().post(new MessageEvent("主线程发送过来的数据"));
// 结束当前页面
finish();
}
});
// 接收粘性事件数据按钮的点击事件处理
bt_eventbus_send_sticky.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isFirstFlag) {
isFirstFlag = false;
// 4 注册
EventBus.getDefault().register(EventBusSendActivity.this);
}
}
});
}
// 3 接收粘性事件
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void StickyEventBus(StickyEvent event){
// 显示接收的数据
tv_eventbus_send_result.setText(event.msg);
}
private void initData() {
tv_title.setText("EventBus发送数据页面");
}
private void initView() {
tv_title = (TextView)findViewById(R.id.tv_title);
bt_eventbus_send_main = (Button)findViewById(R.id.bt_eventbus_send_main);
bt_eventbus_send_sticky = (Button)findViewById(R.id.bt_eventbus_send_sticky);
tv_eventbus_send_result = (TextView)findViewById(R.id.tv_eventbus_send_result);
}
@Override
protected void onDestroy() {
super.onDestroy();
// 5 解注册
EventBus.getDefault().removeAllStickyEvents();
EventBus.getDefault().unregister(EventBusSendActivity.this);
}
}