Android Rxjava实现EventBus

一:使用RxJava1模仿EventBus传值,快速方便

依赖:

compile 'io.reactivex:rxjava:1.3.4'

compile 'io.reactivex:rxandroid:1.2.1'



二:工具类封装

public class RxBus {

private static volatile RxBus instance;

private SerializedSubjectbus;

public RxBus() {

bus=newSerializedSubject(PublishSubject.create());

}

public static RxBus getInstance() {

if (instance== null) {

synchronized (RxBus.class) {

if (null== instance) {

instance=newRxBus();

}

}

}

return instance;

}

//传入数据

public void post(Object o){

bus.onNext(o);

}

//返回类型--被观察者

publicObservabletObservable(Classevent) {

return bus.ofType(event);

}

}



三:使用

import rx.Observable;

import rx.android.schedulers.AndroidSchedulers;

import rx.functions.Action1;

import rx.schedulers.Schedulers;

public class RxbusActivity extends AppCompatActivity {

private TextView tv;

private Button btn;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_rxbus);

tv= (TextView)findViewById(R.id.tv);

btn= (Button)findViewById(R.id.btn);

//点击发送值

btn.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

RxBus.getInstance().post("Android Stuio");

}

});

//得到被观察者

Observableobservable=RxBus.getInstance().tObservable(String.class);

//观察者查看

observable

.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

.subscribe(new Action1() {

@Override

public void call(String s) {

//改变TextView值

tv.setText(s);

}

});

}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容