AndroidViewModel cung cấp ngữ cảnh ứng dụng
Nếu bạn cần sử dụng bối cảnh bên trong Viewmodel, bạn nên sử dụng AndroidViewModel (AVM), vì nó chứa bối cảnh ứng dụng. Để truy xuất cuộc gọi ngữ cảnh getApplication()
, nếu không, hãy sử dụng ViewModel (VM) thông thường.
AndroidViewModel có bối cảnh ứng dụng . Chúng ta đều biết có trường hợp bối cảnh tĩnh là xấu vì nó có thể gây rò rỉ bộ nhớ !! Tuy nhiên, có phiên bản Ứng dụng tĩnh không tệ như bạn nghĩ vì chỉ có một phiên bản Ứng dụng trong ứng dụng đang chạy.
Do đó, việc sử dụng và có cá thể Ứng dụng trong một lớp cụ thể không phải là vấn đề chung. Nhưng, nếu một cá thể Ứng dụng tham chiếu đến chúng, thì đó là một vấn đề do vấn đề chu trình tham chiếu.
Xem thêm về Sơ thẩm ứng dụng
AndroidViewModel Có vấn đề đối với các bài kiểm tra đơn vị
AVM cung cấp bối cảnh ứng dụng có vấn đề cho thử nghiệm đơn vị. Các thử nghiệm đơn vị không nên đối phó với bất kỳ vòng đời Android nào, chẳng hạn như bối cảnh.