AndroidViewModel Uygulama içeriği sağlar
Viewmodel'inizde bağlam kullanmanız gerekiyorsa, uygulama bağlamını içerdiği için AndroidViewModel (AVM) kullanmalısınız. Bağlam çağrısını almak için getApplication()
, aksi takdirde normal ViewModel'i (VM) kullanın.
AndroidViewModel uygulama içeriğine sahiptir . Bellek sızıntılarına neden olabileceğinden hepimiz statik bağlam örneğinin kötü olduğunu biliyoruz !! Ancak, statik Uygulama örneğine sahip olmak düşünebileceğiniz kadar kötü değildir, çünkü çalışan uygulamada yalnızca bir Uygulama örneği vardır.
Bu nedenle, Application örneğini belirli bir sınıfta kullanmak ve kullanmak genel bir sorun değildir. Ancak, bir Uygulama örneği bunlara başvuruyorsa, başvuru döngüsü sorunu nedeniyle bir sorundur.
Ayrıca bkz. Uygulama Örneği hakkında
AndroidViewModel Birim testleri için sorunlu
AVM, birim testi için sorunlu olan uygulama bağlamı sağlar. Birim testleri, içerik gibi Android yaşam döngülerinin hiçbiriyle ilgilenmemelidir.