RxJava1.0的RxBus使用

来源:互联网 发布:sc2020网络打印机设置 编辑:程序博客网 时间:2024/05/21 14:41
依赖:
compile 'io.reactivex:rxjava:1.0.14'compile 'io.reactivex:rxandroid:1.0.1'
RxBus工具类
package com.example.rxbus10;import rx.Observable;import rx.subjects.PublishSubject;import rx.subjects.SerializedSubject;/** * Created by xsj on 2017/12/6. */public class RxBus {    private SerializedSubject<Object, Object> bus;    //单列模式    private static volatile RxBus instance;    public static RxBus getInstance() {        if (instance == null) {            synchronized (RxBus.class) {                if (null == instance) {                    instance = new RxBus();                }            }        }        return instance;    }    public RxBus() {        bus=new SerializedSubject<Object,Object>(PublishSubject.create());    }    //传入数据    public void post(Object o){        bus.onNext(o);    }    //返回类型--被观察者    public <T> Observable<T> tObservable(Class<T> event) {        return bus.ofType(event);    }}
MainActivity
package com.example.rxbus10;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;import rx.Observable;import rx.Subscription;import rx.android.schedulers.AndroidSchedulers;import rx.functions.Action1;import rx.schedulers.Schedulers;public class MainActivity extends AppCompatActivity {    private TextView tv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Button but= (Button) findViewById(R.id.but);        tv = (TextView) findViewById(R.id.tv);        //点击事件        but.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Person p = new Person(1, "zhangsan", 24);                RxBus.getInstance().post(p);            }        });        //得到被观察者        Observable<Person> observable = RxBus.getInstance().tObservable(Person.class);        //观察者查看        Subscription subscribe = observable                .subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(new Action1<Person>() {                    @Override                    public void call(Person person) {                        tv.setText("接收到的名字是" + person.getName());                    }                });    }}


原创粉丝点击