2016-04-06 20 views
0

Şimdi Retrofit 2 hakkında bir şeyler öğreniyorum. Benim app Intent "UploadToServer" Ben sırayla çağırmak zorunda üç async görevleri var: 1. UserName göndermek ve UserId geri almak. 2. Coğrafi konum ve diğer dize verilerini gönderin ve "rapor bileti numarası" nı geri alın. 3. Bilet numarası ile birlikte bir jpg resmi gönderin. Sunucumda çalışan bir web servisim var.Retrofit 2 Sıralı Yayınlar

Standart el kodlu Java'da bir lüper veya benzeri bir şey kullanırdım. Bu, Retrofit 2 kullanılarak nasıl başarılabilir? Ve oh, özellikle jpg görüntü dosyasını yüklerken, bir ilerleme çubuğu taşımak istiyorum.

Teşekkürler.

cevap

0

Sen geri aramalar kullanarak çağrı zincir edebilirsiniz:

OkHttpClient client = new OkHttpClient.Builder().build(); 

    Retrofit retrofit = new Retrofit.Builder() 
        .baseUrl(BASE_URL_WEBAPI) 
        .addConverterFactory(GsonConverterFactory.create()) 
        .client(client) 
        .build(); 

    mService = retrofit.create(IWebApi.class); 
    ... 
    mService.first_operation(...params...).enqueue(callback); 

geri arama first_operation sonuçlarını bekleyen bir sınıfının bir örneğidir. İlk işlem başarı ise, ikinci_method'u arayın.

public class Example implements Callback<void> { 

     @Override 
     public void onResponse(Response<LoginResponse> response) { 
      second_method(); 
     } 

     @Override 
     public void onFailure(Throwable t) {   
      t.printStackTrace(); 
     } 
} 

Yardım edin.

Düzenleme:

Ben gerçek de ortada olanlar ile ProgressDialog kullanın. Hizmet çağrısından hemen önce gösterebilir ve yanıt alındığında, onResponse'de veya onFailure yöntemlerinde gizleyebilirsiniz.

mProgressDialog = ProgressDialog.show(this, getString(R.string.wait_plaease), 
      getString(R.string.executing_action), true);