В моем приложении android я делаю два сетевых вызова, чтобы получить два ресурса от сервера. Эти два вызова происходят из двух разных потоков, и они не зависят друг от друга.
public Resource1 getresources1(Params params1) {
return mResourceGetter.get(params1).getResource1();
}
public Resource1 getresources2(Params params2) {
return mResourceGetter.get(params2).Resource2();
}
Оба метода используют один и тот же экземпляр HTTP-клиента для получения ресурсов. Сейчас я планирую получить оба ресурса за один звонок. Но без изменения существующей архитектуры.
Resource2 mResource2 = null;
public Resource1 getresourcesGlobal(Params params1) {
return getResource(params1).;
}
public Resource2 getresources2(Params params2) {
// Block untill getResource(). call completes its execution.
return mResource2;
}
private Resource1 getResource(Params params) {
Params globalparames = GetParamsRelatedToResource1and2();
Resource response= mResourceGetter.get(globalparames);
if (!response.isPresent()) {
// Throw exception. and handle it.
}
if (response.getResource2()!= null) {
mResource2 = response.getResource2()
} else {
// do error handling.
}
return response.getResource1();
}
Мне интересно, это правильный способ сделать это? Если нет предложений о том, как обращаться со сценарием ios, как эта эффективность. Любые указания о том, как эффективно заблокировать эту функцию?
Я профилировал сетевой вызов, это займет в среднем 500 мс.