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 。