Android: Vì sao Viewmodel không được gọi thông qua constructor mà lại dùng ViewModelProvider
Chào mọi người, mình đang học kotlin và có một vài chỗ thắc mắc mong được mọi người giúp đỡ. Trong android vì sao viewmodel lại được gọi trong activity thông qua ViewModelProvider
hoặc ViewModelProviders.Factory
mà không dùng trực tiếp constructor vậy ? Ví dụ nếu mình gọi mViewModel = new ViewModelProvider(context).get(CustomViewModel.class);
thì có gì khác với gọi mViewModel = new CustomViewModel(context);
không ? Cảm ơn mọi người rất nhiều
2 CÂU TRẢ LỜI
Nếu bạn sử dụng ViewModelProvider
thì khi Activity finish sẽ callback mViewModel.onCleared()
Nếu bạn tạo ViewModel bằng constructor nó sẽ không callback mViewModel.onCleared()
để giải phóng tài nguyên
Cũng giống như state, muốn thay đổi state thì phải update bằng hàm setState chứ không update state = value trực tiếp được.