Как воссоздать ViewModel вместо чтения предыдущего - PullRequest
0 голосов
/ 29 мая 2019

Как мы можем найти на Google сайте, там написано:

Если действие воссоздается, оно получает тот же экземпляр MyViewModel, который был создан первым действием. Когда действие владельца завершено, платформа вызывает метод onCleared () объектов ViewModel, чтобы очистить ресурсы.

Итак, сейчас я не хочу эту функцию. Я хочу воссоздавать ViewModel каждый раз, когда создается Fragment. Потому что у меня есть ссылка на объект, используя идентификатор.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    SaleViewModel viewModel = ViewModelProviders.of(this).get(SaleViewModel.class);
    viewModel.getSaleLiveData().observe(this, new Observer<List<SaleEntity>>() {
        @Override
        public void onChanged(@Nullable List<SaleEntity> saleEntities) {
            initAll();
        }
    });
}

Внутри SaleViewModel, у меня есть ссылка на Store (которая установлена ​​ранее):

private static FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
private static DatabaseReference HOT_STOCK_REF = FirebaseDatabase.getInstance().getReference("users").child(user.getUid()).child(FirebaseStoreRef.getInstance().getStoreEntity().getId()).child("income");
private FirebaseQueryLiveData liveData = new FirebaseQueryLiveData(HOT_STOCK_REF);

С учетом вышесказанного мне нужно воссоздавать ViewModel каждый раз из-за ссылки, которую мне нужно обновить (в противном случае я получу первый набор ссылок).

Заранее спасибо.

...