如何重新创建ViewModel而不是阅读上一个

时间:2019-05-29 05:28:56

标签: android mvvm viewmodel android-lifecycle

我们在Google网站上可以看到,它说:

  

如果重新创建该活动,它将收到与第一个活动创建的相同的MyViewModel实例。所有者活动完成后,框架将调用ViewModel对象的onCleared()方法,以便清理资源。

所以,现在,我不想要该功能。我想在每次创建ViewModel时重新创建Fragment。因为我使用ID引用了对象。

@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(否则,我将获得第一个引用集)。

谢谢。

0 个答案:

没有答案