比如需求:
更改了用户头像,想要点击保存时候,另一个界面的头像位置 立即改变成刚刚更换的头像
首先,建一个实体类 RxEvent 里面声明他的头像属性,并且写出get set,当然其他地方也可能会有实时更新的需求,所以可以直接在这个类中定义多个属性
public class RxBusEvent { public String userNickname; public String userAvatar; public String refreshMyAlbumData; public String getUserNickname() { return userNickname; } public void setUserNickname(String userNickname) { this.userNickname = userNickname; } public String getUserAvatar() { return userAvatar; } public void setUserAvatar(String userAvatar) { this.userAvatar = userAvatar; } public String getRefreshMyAlbumData() { return refreshMyAlbumData; } public void setRefreshMyAlbumData(String refreshMyAlbumData) { this.refreshMyAlbumData = refreshMyAlbumData; }
需要 在 点击保存的事件里,发送出信息
先声明这个实体类 RxEvent rxEvent = new RxEvent();
然后通过这个实体类装载头像数据 rxEvent.setUserAvatar(" url ");
最后用RxBus发送信息:Rxbus.getDefault().post(rxEvent);
好了 现在已经将信息发送出去,接下来就是需要在需要的地方去接收 并拿到数据设置在需要的位置
RxBus.getDefault().toObservable(RxBusEvent.class) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<RxBusEvent>() { @Override public void call(RxBusEvent rxBusEvent) { if (!TextUtils.isEmpty(rxBusEvent.getUserAvatar())) { Glide.with(MainActivity.this) .load(rxBusEvent.getUserAvatar() + "") .asBitmap().placeholder(R.drawable.icon_myself_touxiang).into(ivUserAvator); } } });
当然,有时候不需要发送信息,只需要发送类似广博的消息,这时候也可以用这个实现,比如上文实体类中有
setRefreshMyAlbumData
属性,发送信息时候就可以直接setRefreshMyAlbumData("请更新数据")
那边接收到信号直接更新数据