При ознакомлении с официальным руководством по Android Компоненты архитектуры в разделе, объясняющем уровень хранилища с помощью запроса Retrofit, есть фрагмент кода, который я не могу полностью понять:
public class UserRepository {
private Webservice webservice;
// ...
public LiveData<User> getUser(int userId) {
// This is not an optimal implementation, we'll fix it below
final MutableLiveData<User> data = new MutableLiveData<>();
webservice.getUser(userId).enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
// error case is left out for brevity
data.setValue(response.body());
}
});
return data;
}
}
На этом этапе мы инициализируем наш LiveData
объект:
final MutableLiveData<User> data = new MutableLiveData<>();
Затем в асинхронном вызове для модификации мы устанавливаем значение для этой переменной.
Как этоасинхронный вызов, разве этот метод не вернет инициализированные данные, но никогда не с установленным значением?