开始做Demo时,我说怎么没RxBus这个类呢,是不是要导包,还纠结了许久,结果呢,我呵呵一笑,自己就是个傻逼,这里的RxBus是自己定义的一个类,废话不多说了,咱们先看看RxBus的代码:
RxBus类:
public class RxBus {
private final Subject<Object, Object> _bus;
private static class RxBusHolder {
private static final RxBus instance = new RxBus();
}
private RxBus() {
_bus = new SerializedSubject<>(PublishSubject.create());
}
public static synchronized RxBus getInstance() {
return RxBusHolder.instance;
}
public void post(Object o) {
_bus.onNext(o);
}
public <T> Observable<T> toObserverable(Class<T> eventType) {
return _bus.ofType(eventType);
}
public boolean hasObservers() {
return _bus.hasObservers();
}
}
////////////////////////////////////////////////////////////////////////
主函数类:
public class MainActivity extends Activity {
Button button;
TextView textView;
Subscription subscription;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//注册
subscription= RxBus.getInstance().toObserverable(String.class).subscribe(new
Action1<String>() {
@Override
public void call(String s) {
textView.setText(s);
}
});
init();
}
private void init() {
textView= (TextView) findViewById(R.id.my_textview);
button = (Button) findViewById(R.id.my_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RxBus.getInstance().post("I love money");
}
});
}
@Override
protected void onStop() {
super.onStop();
subscription.unsubscribe();
}
}
最后,你说这有什么用处,说白了,就是广播呗。