Связывание данных Android: производительность @Binable и Observablefield - PullRequest
1 голос
/ 18 апреля 2019

Что дает здесь большую производительность?

@Bindable использует: notifyPropertyChanged(fieldName) где Observablefield использует notifyChange() в методе set, который уведомляет обо всем в файле.

private class User extends BaseObservable {
   private String firstName;
   private String lastName;
   @Bindable
   public String getFirstName() {
       return this.firstName;
   }
   @Bindable
   public String getLastName() {
       return this.lastName;
   }
public void setFirstName(String firstName) {
       this.firstName = firstName;
       notifyPropertyChanged(BR.firstName);
   }
   public void setLastName(String lastName) {
       this.lastName = lastName;
       notifyPropertyChanged(BR.lastName);
   }
}

против

private class User {
   public final ObservableField<String> firstName =
       new ObservableField<>();
   public final ObservableField<String> lastName =
       new ObservableField<>();

public void setFirstName(String firstName) {
       firstName.set(firstName)
   }
   public void setLastName(String lastName) {
       lastName.set(lastName)
   }

}

1 Ответ

1 голос
/ 19 апреля 2019

Неважно, они оба эффективны.

У меня сложилось впечатление, что когда мы вызываем метод Observablefield .set(newValue), он вызывает notifyChange(), который обновляет все поля класса User, но это неверно. Оно обновляет только это поле, поскольку notifyChange() принадлежит этому объекту Observablefield, а не объекту User.

...