EventBus中的粘性事件
开始使用:
同样的
第一步还是先导入依赖
第二步还是创建对象
第三步MainActivity,非常简单就一个在跳转后传入一个字符串
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button second_activity_jump;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
second_activity_jump = (Button) findViewById(R.id.second_activity_jump);
second_activity_jump.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.second_activity_jump:
startActivity(new Intent(MainActivity.this,SecondActivity.class));
EventBus.getDefault().postSticky(new EventBusMessage("粘性事件"));
finish();
break;
}
}
}
跳转到的Activity,需要注意的一点就是一个类只能注册一次EventBus如果多注册会报错,使用完不仅需要注销注册还需要清空缓存.
public class SecondActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn;
private TextView title;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
initView();
}
@Subscribe( threadMode = ThreadMode.MAIN , sticky = true)
public void eventMessage(EventBusMessage eventBusMessage){
title.setText(eventBusMessage.getMessage());
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn:
//注册
if(!EventBus.getDefault().isRegistered(this)){
EventBus.getDefault().register(this);
}
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
//注销注册事件
EventBus.getDefault().unregister(this);
//清空粘性事件的缓存
EventBus.getDefault().removeAllStickyEvents();
}
private void initView() {
btn = (Button) findViewById(R.id.btn);
title = (TextView) findViewById(R.id.title);
btn.setOnClickListener(this);
}
}