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