Почему объекты LiveData в ViewModel должны создаваться во время объявления?

C0D3LIC1OU5 спросил: 14 ноября 2017 в 05:12 в: java

Обратите внимание на следующий код из учебного руководства по компонентам архитектуры Google:

class MyViewModel extends ViewModel {
    private final PostalCodeRepository repository;
    private final MutableLiveData<String> addressInput = new MutableLiveData();
    public final LiveData<String> postalCode =
            Transformations.switchMap(addressInput, (address) -> {
                return repository.getPostCode(address);
             });  public MyViewModel(PostalCodeRepository repository) {
      this.repository = repository
  }  private void setInput(String address) {
      addressInput.setValue(address);
  }
}

Обратите внимание, что объекты LiveData создаются во время объявления.

Из того, что я могу сказать из этого ответа , разница между их созданием во время объявления или внутри констриктора очень мала. Тем не менее, насколько я понимаю, существует возможность наличия NPE или устаревших ссылок, когда объекты LiveData создаются с помощью конструктора, поэтому Googles рекомендует создавать их экземпляры во время объявления .

Моя догадка заключается в том, что она может иметь какое-то отношение к созданию объектов ViewModel с помощью отражения, однако мне не удалось найти, как именно это может повлиять создание этих объектов.

Почему следует создавать объекты LiveData во время объявления?

0 ответов