В моем приложении для Android у меня есть экран, на котором у меня есть 3 счетчика, которые необходимо заполнить из вызова API.
static List<TripCode> tripCodeList = new ArrayList<>();
static List<Fleet> truckList = new ArrayList<>();
static List<Trailer> trailerList = new ArrayList<>();
И я не хочу раздувать макет, пока не получу ответ отвсе 3 различных вызова API, так что это то, что я делаю
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = this;
if (MyApplication.isConnected()) {
getTripCodes();
} else {
Toast.makeText(this, "No internet Connection", Toast.LENGTH_LONG).show();
setContentView(R.layout.no_internet_connection);
}
}
По сути, я удалил setContentView(R.layout.activity_create_trip);
из onCreate()
И я позвонил getTripCodes()
вот код дляgetTripCodes()
public void getTripCodes() {
MyApplication.showProgressDialog(getString(R.string.please_wait), this);
IMyAPI iMyAPI = MyApplication.getIMyAPI();
Call<List<TripCode>> call = iMyAPI.getTripCodes();
call.enqueue(new Callback<List<TripCode>>() {
@Override
public void onResponse(Call<List<TripCode>> call, Response<List<TripCode>> response) {
if (response.isSuccessful() && response.body() != null) {
tripCodeList = response.body();
Log.d("test", "getTripCodes success = " + tripCodeList.size());
getTrucks();
} else {
MyApplication.dismissProgressDialog();
}
}
@Override
public void onFailure(Call<List<TripCode>> call, Throwable t) {
MyApplication.dismissProgressDialog();
}
});
}
Таким образом, в случае успешного вызова я вызываю другую функцию getTrucks()
, которая также получает результат от API, и в случае успеха она вызывает getTrailers()
Но я думаю, что это пустая трата времени, потому что я могу вызвать все три функции параллельно, а затем проверить, заполнен ли весь список или нет.
Но я не знаю, как это сделать,Как я могу проверить, все ли звонки успешны? И если один из них потерпел неудачу, как я узнаю, какой именно потерпел неудачу?