AndroidViewModelเป็น subclass ของViewModel ความแตกต่างระหว่างพวกเขาคือเราสามารถส่งผ่านบริบทของแอปพลิเคชันซึ่งสามารถนำมาใช้เมื่อใดก็ตามที่จำเป็นต้องใช้บริบทของแอปพลิเคชันเพื่อยกตัวอย่างฐานข้อมูลในพื้นที่เก็บข้อมูล
AndroidViewModelเป็นแอปพลิเคชัน ViewModel ที่รับรู้บริบท
AndroidViewModel:
public class PriceViewModel extends AndroidViewModel {
private PriceRepository priceRepository;
public PriceViewModel(@NonNull Application application) {
super(application);
priceRepository= new PriceRepository(application);
allPrices = priceRepository.getAllPrices();
}
ViewModel:
public class PriceViewModel extends ViewModel {
public PriceViewModel() {
super();
}
คุณควรใช้AndroidViewModelเมื่อคุณต้องการบริบทแอปพลิเคชันเท่านั้น
คุณไม่ควรจัดเก็บข้อมูลอ้างอิงของกิจกรรมหรือมุมมองที่อ้างอิงกิจกรรมใน ViewModel เพราะ ViewModel ถูกออกแบบมาเพื่อให้มีอายุการใช้งานนานกว่าและจะทำให้ Memory Leak หาย