ViewModel là nơi giữ state cấp màn hình + business logic, tách khỏi UI (Activity/Fragment/Composable).
Vì sao quan trọng:
- Nó sống sót qua config change (xoay màn hình) vì được gắn với ViewModelStoreOwner, không bị hủy–tạo lại theo Activity/Fragment → không phải fetch lại dữ liệu, không mất state.
- Chỉ bị dọn khi owner thực sự biến mất (onCleared()); dùng SavedStateHandle để chống mất dữ liệu khi process bị kill.
Nguyên tắc:
- ViewModel không giữ tham chiếu tới Context/View/Activity (rò rỉ bộ nhớ).
- Expose state qua StateFlow/LiveData cho UI quan sát.
Hay hỏi: khác nhau giữa onSaveInstanceState và ViewModel (ViewModel giữ object lớn trong RAM; saved-state giữ dữ liệu nhỏ, sống qua process death).