Android开发之--- 使用RxBus实现页面之间的数据实时更新

来源:互联网 发布:流程数据保存失败 编辑:程序博客网 时间:2024/06/01 09:29


比如需求:

更改了用户头像,想要点击保存时候,另一个界面的头像位置  立即改变成刚刚更换的头像

首先,建一个实体类 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("请更新数据")

那边接收到信号直接更新数据

0 0
原创粉丝点击