Rxjava实现eventbus效果
来源:互联网 发布:淘宝活动利益点怎么写 编辑:程序博客网 时间:2024/06/06 18:08
//导入依赖
compile 'io.reactivex:rxandroid:1.1.0'compile 'io.reactivex:rxjava:1.1.2'compile'com.trello:rxlifecycle:0.3.0'compile'com.trello:rxlifecycle-components:0.3.0'//RXBus工具类
public class RxBusUtils { private static volatile RxBusUtils instance; private SerializedSubject<Object, Object> bus; public RxBusUtils(){ bus = new SerializedSubject<>(PublishSubject.create()); } public static RxBusUtils getInstance(){ if(instance==null){ synchronized (RxBusUtils.class){ if(instance==null){ instance= new RxBusUtils(); } } } return instance; } public void post(Object o){ bus.onNext(o); } public <T> Observable<T> tObservable(Class<T> event) { return bus.ofType(event); }}
//activity
public class MainActivity extends RxAppCompatActivity implements View.OnClickListener { private Button btn; private TextView textView; private Subscription subscribe; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button) findViewById(R.id.btn); textView = (TextView) findViewById(R.id.tv); btn.setOnClickListener(this); // //在没有忘记写防止内存泄漏使用接收方法 MainActivity extends AppCompatActivity// subscribe = RxBusUtils.getInstance().tObservable(Person.class)// .subscribeOn(Schedulers.io())// .observeOn(AndroidSchedulers.mainThread())// .subscribe(new Action1<Person>() {// @Override// public void call(Person person) {// textView.setText(person.getName());// }// }); //在忘记写防止内存泄漏使用接收方法 MainActivity extends RxAppCompatActivity Observable<Person> observable = RxBusUtils.getInstance().tObservable(Person.class); Subscription subscribe = observable .compose(this.bindUntilEvent(ActivityEvent.DESTROY)) .subscribe(); subscribe = observable .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<Person>() { @Override public void call(Person person) { textView.setText(person.getName()); } }); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.btn: Person person = new Person("新数据,456"); RxBusUtils.getInstance().post(person); break; } }// @Override // // 防止内存泄漏// protected void onDestroy() {// super.onDestroy();// if (subscribe!=null) {// if(subscribe.isUnsubscribed()){// subscribe.unsubscribe();// }// }// }}
阅读全文
0 0
- Rxjava实现eventbus效果
- 使用RxJava实现EventBus
- RxJava实现EventBus
- RxBus----Rxjava实现EventBus
- RxJava实现EventBus
- 使用Rxjava实现Eventbus
- 基于RxJava、RxAndroid的EventBus实现
- [Android]基于RxJava、RxAndroid的EventBus实现
- RxJava使用示例: 实现Rxbus代替eventbus
- 通过Rxjava和RxAndroid实现的EventBus
- 使用RxJava和RxAndroid封装RxBus,实现EventBus功能
- Android MVP 实现。基于Dagger2 + RxJava + Retrofit2 + Realm + ButterKnife + EventBus
- 用RxJava实现Rxbus替换EventBus事件总线
- Android消息传递之基于RxJava实现一个EventBus
- RxJava、EventBus学习笔记
- 观察者模式->EventBus->Rxjava
- RxJava和RxBus代替EventBus
- 小白装逼:使用rxjava代替eventBus
- codeforces 894A. QAQ
- iOS微信分享&h5和原生app交互
- Android中UI线程(主线程)和子线程间的通讯方式比较
- js包装对象
- 解决loadrunner11 无法连接oracle数据库的问题
- Rxjava实现eventbus效果
- Spring-Boot启动方式
- Ant之build.xml详解
- 在Linux环境下配置jdk的环境变量
- eclipse运行java总显示上一个程序的运行结果(解决方案)
- win10安装vmware workstation 12无法联网
- ubuntu16.04下安装和彻底删除mysql5.7
- Python-append和extend函数
- rsync(一):基本命令和用法