2016-08-29 3 views
0

Ich versuche, einige Anfragen bei Observable.zip (...) zu kombinieren, aber ich habe eine Fehlermeldung android.os.NetworkOnMainThreadException. Was mache ich falsch?RxJava und Retrofit2: android.os.NetworkOnMainThreadException

Call<EmployeeInfo> companyInfo = apiService.employee(); 
    companyInfo.enqueue(new Callback<EmployeeInfo>() { 
     @Override 
     public void onResponse(Call<EmployeeInfo> call, Response<EmployeeInfo> response) { 
      EmployeeInfo info = response.body(); 
      Observable.zip(
        apiService.getOrders("https://exaple.com"), 
        apiService.getOrders("https://exaple.com"), 
        apiService.getOrders("https://exaple.com"), 
        apiService.companyInfo("1"), new Func4<Orders, Orders, Orders, CompanyInfo, OrdersDataWrapper>() { 
         @Override 
         public OrdersDataWrapper call(Orders currentOrders, Orders waitingOrders, Orders enterOrders, CompanyInfo companyInfo) { 
          OrdersDataWrapper data = new OrdersDataWrapper(); 
          return data; 
         } 
        }).onErrorReturn(new Func1<Throwable, OrdersDataWrapper>() { 
       @Override 
       public OrdersDataWrapper call(Throwable throwable) { 
        return null; 
       } 
      }) 
        .observeOn(AndroidSchedulers.mainThread()) 
        .subscribe(new Action1<OrdersDataWrapper>() { 
         @Override 
         public void call(OrdersDataWrapper alDataWrapper) { 
         } 
        }); 
     } 

     @Override 
     public void onFailure(Call<EmployeeInfo> call, Throwable t) { 
     } 
    }); 
+0

fehlt subscribeOn –

Antwort

3

Sie setzen die .observeOn, aber nicht die .subscribeOn, so RxJava abonniert und auf dem Haupt-Thread zu beobachten. Fügen Sie eine .subscribeOn (Schedulers.io()) hinzu, damit die Aufrufe im Hintergrundthread ausgeführt werden.

Verwandte Themen