title: Zip operator in RxJava is not working with Retrofit
body: <p>I am trying to use zip operator in RxJava in android, where I am trying to execute 3 parallel API Calls to get their result together. But my zip operator is not producing result. The code for my sample problem is as follows:</p>
  
  <p>Code for my gradle file</p>
  
  <pre><code>compile 'com.squareup.retrofit2:retrofit:2.0.2'
  compile 'com.squareup.retrofit2:converter-gson:2.0.2'
  compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'
  </code></pre>
  
  <p>I have also included this in my gradle file</p>
  
  <pre><code>exclude 'META-INF/rxjava.properties'
  </code></pre>
  
  <p>Code for my Retrofit Client</p>
  
  <pre><code>retrofit = new Retrofit.Builder().baseUrl(BASE_URL)
      .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
      .addConverterFactory(GsonConverterFactory.create())
      .client(client).build();
  </code></pre>
  
  <p>Code for my API Interface</p>
  
  <pre><code>public interface ApiInterface {
      @GET("/users/{UUID}/count.json")
      Observable&lt;Count&gt; getCountInfo(@Path("UUID") String UUID, @Query("store_id") String sort);
      @GET("v1/users/{UUID}.json")
      Observable&lt;GetStatus&gt; getState(@Path("UUID") String UUID);
      @GET("v1/user/{UUID}/points.json")
      Observable&lt;Response&gt; getResponse(@Path("UUID") String UUID);
  }
  </code></pre>
  
  <p>Code for my Observables is</p>
  
  <pre><code>Retrofit repo = APIClient.getClient(baseUrl);
  Observable&lt;Count&gt; userObservable = repo.create(ApiInterface.class)
      .getCount(userid,"1")
      .subscribeOn(Schedulers.newThread())
      .observeOn(Schedulers.io());
  Observable&lt;GetStatus&gt; eventObservable = APIClient.getClient(baseUrl)
      .create(ApiInterface.class)
      .getState(userid)
      .subscribeOn(Schedulers.newThread())
      .observeOn(Schedulers.io());
  Observable&lt;Response&gt; eventsObservable1 = APIClient
      .getClient(baseUrl)
      .create(ApiInterface.class)
      .getPoints(userid)
      .subscribeOn(Schedulers.newThread())
      .observeOn(Schedulers.io());
  </code></pre>
  
  <p>Code for my combined observable and zip operator is:</p>
  
  <pre><code>Observable&lt;CommonSplashResponse&gt; combined = Observable.zip(userObservable, eventsObservable, eventsObservable1,
  new Func3&lt;Count, GetStatus, Response, CommonResponse&gt;() {
      @Override
      public CommonResponse call(Count count, GetStatus uStatus, 
          Response lResponse) {
          return new CommonResponse(count, uStatus, lResponse);
      }
  });
  combined.subscribe(new Subscriber&lt;CommonSplashResponse&gt;() {
      @Override
      public void onCompleted() {
      }
      @Override
      public void onError(Throwable e) {
      }
      @Override
      public void onNext(CommonResponse o) {
          LOG.info("Count Value is " + o.getCount());
          /**
          ***
          */
      }
  });
  </code></pre>
  
  <p>The problem I am facing is that, the statements inside the onNext of the Combined Observable are not being executed.
  What could be the reason for glitch in execution?
  So I wanted to ask:</p>
  
  <ol>
  <li>Is there any issue in my dependencies?</li>
  <li>Should AndroidSchedulers.mainThread() be used instead of Schedulers.io()</li>
  </ol>