Gradle:
implementation "com.blankj:rxbus:1.0"
public class YourActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 注册 String 类型事件
RxBus.getDefault().subscribe(this, new RxBus.Callback<String>() {
@Override
public void onEvent(String s) {
Log.e("eventTag", s);
}
});
// 注册带 tag 为 "my tag" 的 String 类型事件
RxBus.getDefault().subscribe(this, "my tag", new RxBus.Callback<String>() {
@Override
public void onEvent(String s) {
Log.e("eventTag", s);
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
// 注销
RxBus.getDefault().unregister(this);
}
}
// 发送 String 类型事件
RxBus.getDefault().post("without tag");
// 发送带 tag 为 "my tag" 的 String 类型事件
RxBus.getDefault().post("with tag", "my tag");
// 发送 String 类型的粘性事件
RxBus.getDefault().postSticky("without tag");
// 发送带 tag 为 "my tag" 的 String 类型的粘性事件
RxBus.getDefault().postSticky("with tag", "my tag");
public class YourActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 注册 String 类型事件
RxBus.getDefault().subscribeSticky(this, new RxBus.Callback<String>() {
@Override
public void onEvent(String s) {
Log.e("eventTag", s);
}
});
// 注册带 tag 为 "my tag" 的 String 类型事件
RxBus.getDefault().subscribeSticky(this, "my tag", new RxBus.Callback<String>() {
@Override
public void onEvent(String s) {
Log.e("eventTag", s);
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
// 注销
RxBus.getDefault().unregister(this);
}
}
网上现有 RxBus 存有的问题:
介于以上问题,我还是亲自封装一个简洁的供大家使用,库已经依赖了 RxAndroid 和 RxJava,所以导入了该库的就不需要再额外导入那两库了。
当然,如果通信频率比较高追求效率的话还是推荐使用 EventBus 。