У меня есть AndroidViewModel
, используемый в двух fragments
и содержит объект LiveData
, подобный следующему
public class CartViewModel<v extends CartCallback> extends BaseViewViewModel<v> {
private RoomDb roomDb;
private BaseApi api;
private AppExecutors executors;
private PrefsManger prefsManger;
private LiveData<List<LineEntity>> lines;
private LiveData<List<ImageEntity>> images;
private MutableLiveData<CartInfo> cartInfo;
private LiveData<Long> linesCount;
public CartViewModel(Application application, RoomDb roomDb, BaseApi api, AppExecutors executors, PrefsManger prefsManger) {
super(application);
this.roomDb = roomDb;
this.api = api;
this.executors = executors;
this.prefsManger = prefsManger;
lines = roomDb.lineDao().getAllLines();
}
public LiveData<List<LineEntity>> getLines() {
return lines;
}
public void saveOfflineLine(LineEntity entity) {
executors.diskIO().execute(() -> roomDb.lineDao().save(entity));
}
}
, и на обоих фрагментах я запускаю модель представления, подобную этой
CartViewModel cartViewModel = ViewModelProviders.of(this, cartFactory).get(CartViewModel.class);
cartViewModel.attachView(this);
когда я наблюдаю по строкам liveData из одного фрагмента и пользователь saveOfflineLine(entity)
из другого по onChange не запускает, но если наблюдает и сохраняет из того же фрагмента (означает тот же экземпляр из модели представления) onChange
успешно запускает