반응형
MVVM 패턴을 적용한 예제 코드를 보다보면 Application 클래스를 사용하는 경우가 있다.
Application 클래스는 가장 큰 베이스 클래스라는 느낌은 오는데 정확하게 어떤 클래스인지 알아보고자 포스팅을 작성하게 되었다.
Application 클래스
Global application 상태를 유지(maintain)하기 위한 Base class
하위 클래스를 만들고 이 하위 클래스의 정규화된 이름을 Manifest.xml의 <application> 태그에서 "android:name" 속성으로 지정해 고유한 구현을 제공할 수 있다. Application 클래스 또는 그 하위 클래스는 application/package에 대한 프로세스가 생성될 때 다른 클래스보다 먼저 인스턴스화 된다.
❇️ Application 클래스는 어느 컴포넌트(Activity, Service, intent 등)에서나 공유할 수 있는 전역 class
일반적으로는 하위 클래스를 필요로 하지 않는다. 대부분 static Singleton이 동일한 기능을 제공한다.
Custom Application 클래스
❇️ Application 하위 클래스가 필요한 경우
- 첫번째 Activity를 만들기 전에 실행해야 하는 특수 작업
- 모든 컴포넌트에서 공유해야 하는 global 초기화
- 공유 네트워크 클라이언트 객체 같은 static immutable data에 쉽게 접근할 수 있는 static 메서드
❌ mutable shared data의 경우, 언제든지 사라지거나 유효하지 않을 수 있기 때문에 Application 객체 내에 저장하면 안된다. 대신 files, SharedPreferences, SQLite와 같이 persistence strategies를 사용하는 mutable shared data는 저장해도 된다.
Application 클래스의 메소드
- onCreate() : 어플리케이션이 생성될 때 호출 → 응용 프로그램의 시작점으로 신속히 처리되어야 함
- onTerminate() : 어플리케이션 객체와 모든 컴포넌트가 종료될 때 호출됨 (항상 사용되는 것은 아님, 종료 처리할 때만 사용)
- onLowMemory() : 시스템의 메모리가 부족할 때 호출됨
reference >
반응형
'ANDROID > Android 앱 프로그래밍' 카테고리의 다른 글
[Android] 위젯 속성 지정하는 헷갈리는 코드 (feat. Kotlin) (0) | 2022.03.04 |
---|---|
[Android] FCM 푸시 알림(Notification) (0) | 2022.02.07 |
[Android] 백그라운드 작업 (0) | 2022.01.27 |
[Android] Context란? (0) | 2022.01.11 |
[Android] 뷰 바인딩(View Binding) in Activity, Fragment, RecyclerView (0) | 2021.08.10 |
[Android] 데이터베이스(Database)와 내용 제공자(Content Provider) (0) | 2021.07.06 |
[Android] 모바일 데이터베이스(Database)와 테이블(Table) 생성 (3) | 2021.07.04 |
[Android] Retrofit2를 사용한 API 통신 (0) | 2021.07.04 |
댓글