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


比如需求:

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

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

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

你可能感兴趣的:(Android)