简单使用RxBus替代EventBus
2016-10-09 13:47
204 查看
首先注意第一点,RxBus不是一个框架,是利用Rxjava的特性所开发的一种模式,下面来看代码
使用方法:
在普通Activity中使用
这只是目前我所知道的一种RxBus的写法,日后会更新更方便快捷的写法
public class RxBus { private static volatile RxBus defaultInstance; private final Subject<Object, Object> objectObjectSubject = new SerializedSubject<>(PublishSubject.create()); public static RxBus getDefault() { if (defaultInstance == null) { synchronized (RxBus.class) { if (defaultInstance == null) { defaultInstance = new RxBus(); } } } return defaultInstance; } public void post(Object obj) { objectObjectSubject.onNext(obj); } public Observable<Object> toObservable() { return objectObjectSubject; } }
使用方法:
public class BaseActivity extends FragmentActivity { Subscription subscription; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); subscription = RxBus.getDefault().toObservable().observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<Object>() { @Override public void call(Object o) { RxBusEvent(o); } }); } protected void RxBusEvent(Object o) { } @Override protected void onDestroy() { super.onDestroy(); if (subscription != null && !subscription.isUnsubscribed()) { subscription.unsubscribe(); } } }
在普通Activity中使用
public class MainActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); } public void clickString(View v) { RxBus.getDefault().post("我发送了一条字符串"); } public void clickBean(View v) { RxBus.getDefault().post(new RxBean("0", "哈哈")); } @Override protected void RxBusEvent(Object o) { super.RxBusEvent(o); if (o instanceof String) { Toast.makeText(MainActivity.this, o.toString(), Toast.LENGTH_LONG).show(); } else if (o instanceof RxBean) { RxBean rxBean = (RxBean) o; Toast.makeText(MainActivity.this, rxBean.getName(), Toast.LENGTH_LONG).show(); } } }
这只是目前我所知道的一种RxBus的写法,日后会更新更方便快捷的写法
相关文章推荐
- EventBus的简单使用
- EventBus在Android中的简单使用
- Rxjava——使用RxBus替换EventBus
- EventBus的简单使用
- 开源框架 EventBus 简单使用
- 使用RxJava和RxAndroid封装RxBus,实现EventBus功能
- 使用erlang实现简单的http性能测试工具,替代loadrunner、loadspace
- EventBus 3.0 简单使用
- EventBus的简单使用
- EventBus简单使用
- EventBus 《二》 Android EventBus的简单使用
- Android EventBus的简单使用
- EventBus的简单使用
- EventBus的简单使用
- Eventbus简单使用
- android使用font awesome替代简单的图标
- 传递消息--第三方开源--EventBus的简单使用
- RxJava使用示例: 实现Rxbus代替eventbus
- EventBus简单使用
- EventBus的简单使用