Android View 모델 대 View 모델
Android Architecture Components 라이브러리의 도입과 함께 다음과 같은 몇 가지 새로운 클래스가 도입되었습니다.AndroidViewModel
그리고.ViewModel
하지만, 저는 이 두 수업의 차이점을 이해하는 데 어려움을 겪고 있습니다.설명서는 다음과 같이 간단하게 설명합니다.AndroidViewModel
다음과 같이:
애플리케이션 컨텍스트 인식
ViewModel
간결함은 고맙지만, 이것이 정확히 무엇을 의미합니까?언제 사용할지 선택해야 합니다.AndroidViewModel
위에ViewModel
그리고 부통령은?
Android View 모델은 애플리케이션 컨텍스트를 제공합니다.
View 모델 내에서 컨텍스트를 사용해야 하는 경우 AVM(Android View Model)을 사용해야 합니다. AVM에는 애플리케이션 컨텍스트가 포함되어 있기 때문입니다.컨텍스트 호출을 검색하려면 다음과 같이 하십시오.getApplication()
그렇지 않으면 일반 VM(View Model)을 사용합니다.
Android View 모델에는 애플리케이션 컨텍스트가 있습니다.정적 컨텍스트 인스턴스가 있으면 메모리 누수가 발생할 수 있기 때문에 좋지 않다는 것은 모두 알고 있습니다.그러나 실행 중인 애플리케이션에는 애플리케이션 인스턴스가 하나만 있기 때문에 정적 애플리케이션 인스턴스를 갖는 것은 생각보다 나쁘지 않습니다.
따라서 특정 클래스에서 응용 프로그램 인스턴스를 사용하고 보유하는 것은 일반적으로 문제가 되지 않습니다.그러나 애플리케이션 인스턴스가 이러한 인스턴스를 참조하는 경우에는 참조 주기 문제로 인해 문제가 됩니다.
Android View 모델 장치 테스트에 문제가 있음
AVM은 장치 테스트에 문제가 있는 응용 프로그램 컨텍스트를 제공합니다.장치 테스트는 컨텍스트와 같은 Android 라이프사이클을 처리하지 않아야 합니다.
마침내 좀 더 간단한 설명을 들었습니다. 조금은...AndroidViewModel 클래스는 ViewModel의 하위 클래스로, UI 관련 데이터를 저장 및 관리하도록 설계되었으며 UI에 대한 데이터를 준비 및 제공하고 구성 변경에도 데이터가 자동으로 유지되도록 합니다.
Android View Model과의 유일한 차이점은 응용프로그램 컨텍스트가 제공된다는 것입니다. 이는 시스템 서비스를 받기 위해 컨텍스트가 필요하거나 유사한 요구사항이 있는 경우 유용합니다.굵게 표시된 텍스트를 사용하면 더 명확하게 감지할 수 있습니다.
Android View Model은 View Model의 하위 클래스입니다.이러한 차이점은 응용프로그램 컨텍스트를 전달할 수 있다는 것입니다. 응용프로그램 컨텍스트는 예를 들어 저장소에서 데이터베이스를 인스턴스화하는 데 필요할 때마다 사용할 수 있습니다.
Android View Model은 응용 프로그램 컨텍스트 인식 View Model입니다.
Android View 모델:
public class PriceViewModel extends AndroidViewModel {
private PriceRepository priceRepository;
public PriceViewModel(@NonNull Application application) {
super(application);
priceRepository= new PriceRepository(application);
allPrices = priceRepository.getAllPrices();
}
모델 보기:
public class PriceViewModel extends ViewModel {
public PriceViewModel() {
super();
}
응용프로그램 컨텍스트가 필요한 경우에만 Android View Model을 사용해야 합니다.
활동 참조 또는 활동을 참조하는 보기를 보기 모델에 저장해서는 안 됩니다.View 모델은 활동 기간보다 오래도록 설계되어 메모리 누수를 유발하기 때문입니다.
AndroidViewModel
를 제공합니다.application context
에 반에면.ViewModel
하지 않다.당신이 이해해야 할 중요한 것은Google
으로 사을권니다합을 사용하는 것이 .ViewModel
그리고 아닌AndroidViewModel
.
사용하지 마십시오.AndroidViewModel
꼭 필요한 경우를 제외하고는
언급URL : https://stackoverflow.com/questions/44148966/androidviewmodel-vs-viewmodel
'bestsource' 카테고리의 다른 글
웹 드라이버가 파이썬에서 에이잭스 요청을 기다립니다. (0) | 2023.08.02 |
---|---|
스프링 데이터에서 JPA 엔티티를 아름답게 업데이트하는 방법은 무엇입니까? (0) | 2023.08.02 |
PHP: 게시된 모든 데이터를 자동으로 가져올 수 있습니까? (0) | 2023.08.02 |
최대 절전 모드 + 스프링을 사용한 캐싱 - 몇 가지 질문 (0) | 2023.08.02 |
Javascript, isArray와 같은 isObject 함수가 있습니까? (0) | 2023.08.02 |