RxAndroid zip操作合并网络请求

两个观察者

 /**
     * 创建获取image的观察者
     * @param imageUrl
     * @return
     */
    public static Observable createImageObservable(final String imageUrl){

        Observable<List<String>> imageObservable = (Observable<List<String>>) Observable.create(new Observable.OnSubscribe<List<String>>() {
            @Override
            public void call(Subscriber<? super List<String>> subscriber) {
                if (subscriber!=null){
                    ImageModel model = new ImageModel();
                    subscriber.onNext(model.loadData(imageUrl));
                }
            }
        });

        return imageObservable;
    }

    /**
     * 创建获取music的观察者
     * @param musicUrl
     * @return
     */
    public static Observable createMusicObservable(final String musicUrl){
        Observable<List<Content>> musicObservable = Observable.create(new Observable.OnSubscribe<List<Content>>() {
            @Override
            public void call(Subscriber<? super List<Content>> subscriber) {
                if (subscriber!=null) {
                    MusicModel musicModel = new MusicModel();
                    subscriber.onNext(musicModel.loadData(musicUrl));
                }
            }
        });

        return musicObservable;
    }

第三个观察者合并,并执行

  //两个网络请求合并
    private void enqueue(){

        Observable imageObservable = RxAndroidUtils.createImageObservable("http://192.168.1.2:8883/random/images/?count=8");
        Observable musicObservable = RxAndroidUtils.createMusicObservable("http://192.168.1.2:8883/random/musics/?count=8");
        Observable.zip(imageObservable, musicObservable, new Func2<List<String>, List<Content>, List<MusicDao>>() {
            @Override
            public List<MusicDao> call(List<String> images, List<Content> contents) {
                List<MusicDao> dao = new ArrayList<>();
                int len = images.size();
                if (len > 0 ){
                    for (int i = 0 ; i < len;i++){
                        dao.add(new MusicDao(contents.get(i),images.get(i)));
                    }
                }
                return dao;
            }
        }).subscribeOn(Schedulers.io())
          .subscribe(new Action1() {
              @Override
              public void call(Object o) {
                  P.p("------------->  "+o.toString());
              }
          });
    }

整理两个数据,合成一个数据使用

[MusicDao {
	content = Content {
		music_url = 'http://up_mp4.t57.cn/2015/1/03m/24/96240455586.m4a', music_title = 'Mihimaru Gt - 幸せになろう.mp3', music_size = '10.50MB', music_redirect_url = 'http://www.333ttt.com/up/up2103453570.html'
	}, imageUrl = 'http://pic.netbian.com/uploads/allimg/170308/125448-148894888806ca.jpg'
}, MusicDao {
	content = Content {
		music_url = 'http://up_mp4.t57.cn/2015/1/10m/17/103170006495.m4a', music_title = '徐浩 - 离开自己.mp3', music_size = '4.17MB', music_redirect_url = 'http://www.333ttt.com/up/up2103493900.html'
	}, imageUrl = 'http://pic.netbian.com/uploads/allimg/161130/214939-1480513779dc6d.jpg'
}, MusicDao {
	content = Content {
		music_url = 'http://up_mp4.t57.cn/2016/1/01m/02/194022237325.m4a', music_title = '时之魔法-白色相簿2.mp3', music_size = '4.95MB', music_redirect_url = 'http://www.333ttt.com/up/up2103503967.html'
	}, imageUrl = 'http://pic.netbian.com/uploads/allimg/170523/194940-149554018065df.jpg'
}, MusicDao {
	content = Content {
		music_url = 'http://up_mp4.t57.cn/2015/1/06m/06/99061653277.m4a', music_title = '入戏太深 王馨田 流行.mp3', music_size = '5.21MB', music_redirect_url = 'http://www.333ttt.com/up/up2103471691.html'
	}, imageUrl = 'http://pic.netbian.com/uploads/allimg/180210/145852-1518245932a12e.jpg'
}, MusicDao {
	content = Content {
		music_url = 'http://up_mp4.t57.cn/2016/1/07m/18/200181236496.m4a', music_title = '耶和华是爱(钢琴伴奏).mp3', music_size = '5.37MB', music_redirect_url = 'http://www.333ttt.com/up/up2103515060.html'
	}, imageUrl = 'http://pic.netbian.com/uploads/allimg/190422/160844-15559205240436.jpg'
}, MusicDao {
	content = Content {
		music_url = 'http://up_mp4.t57.cn/2015/1/10m/26/103262306083.m4a', music_title = '肖洋 - 你曾是少年 (男声版) (《少年班》电影主题曲).mp3', music_size = '4.81MB', music_redirect_url = 'http://www.333ttt.com/up/up2103495233.html'
	}, imageUrl = 'http://pic.netbian.com/uploads/allimg/170318/211047-14898426478be5.jpg'
}, MusicDao {
	content = Content {
		music_url = 'http://up_mp4.t57.cn/2015/1/11m/29/104291702185.m4a', music_title = '撒打算打算的锋偏爱.mp3', music_size = '3.18MB', music_redirect_url = 'http://www.333ttt.com/up/up2103499354.html'
	}, imageUrl = 'http://pic.netbian.com/uploads/allimg/170624/103924-14982719641bd2.jpg'
}, MusicDao {
	content = Content {
		music_url = 'http://up_mp4.t57.cn/2015/5/04m/28/97281711336.m4a', music_title = '黄建秦 - 道隐凤鸣.mp3', music_size = '3.24MB', music_redirect_url = 'http://www.333ttt.com/up/up2103462346.html'
	}, imageUrl = 'http://pic.netbian.com/uploads/allimg/161016/155922-1476604762892c.jpg'
}]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值