관리 메뉴

나만을 위한 블로그

[Android] Application 클래스란? 본문

Android

[Android] Application 클래스란?

참깨빵위에참깨빵 2021. 9. 18. 23:41
728x90
반응형

안드로이드를 사용하다 보면 아주 가끔 Application이란 이름의 클래스를 써야 할 때가 있다.

이 클래스는 왜 있는 거고 뭐에 쓰는 걸까?

 

안드로이드 디벨로퍼에서 말하는 application 클래스는 아래와 같다.

https://developer.android.com/reference/android/app/Application

 

Application  |  Android Developers

 

developer.android.com

전역 응용 프로그램 상태를 유지하기 위한 기본 클래스다. 하위 클래스를 만들고 이 하위 클래스의 정규화된 이름을 매니페스트의 <application> 태그에서 "android:name" 속성으로 지정해 고유한 구현을 제공할 수 있다. Application 클래스 또는 Application 클래스의 하위 클래스는 애플리케이션 / 패키지에 대한 프로세스가 생성될 때 다른 클래스보다 먼저 인스턴스화된다

 

전역으로 공유하기 위해서 사용한다는 것 같다. 사용하려면 매니페스트의 name 속성에 등록해서 써야 한다는 것 같다.

다른 블로그에선 이 클래스를 어떻게 설명하고 있는지 확인해봤다.

 

https://guides.codepath.com/android/Understanding-the-Android-Application-Class#overview

 

Understanding the Android Application Class | CodePath Android Cliffnotes

Overview The Application class in Android is the base class within an Android app that contains all other components such as activities and services. The Application class, or any subclass of the Application class, is instantiated before any other class wh

guides.codepath.com

Application 클래스는 액티비티, 서비스와 같은 다른 기본 구성 요소를 포함하는 안드로이드 앱 내의 기본 클래스다. Application 클래스 또는 Application 클래스의 모든 하위 클래스는 애플리케이션 / 패키지에 대한 프로세스가 생성될 때 클래스보다 먼저 인스턴스화된다. 이 클래스는 주로 첫 번째 액티비티가 표시되기 전에 전역 상태를 초기화하는 데 사용된다. 많은 앱에서 Application 클래스와 직접 작업할 필요는 없다. 그러나 사용자 지정 응용 프로그램 클래스에는 몇 가지 허용되는 용도가 있다.
- 첫 번째 액티비티를 만들기 전에 실행해야 하는 특수 작업
- 모든 구성 요소에서 공유해야 하는 전역 초기화(충돌 보고, 지속성)
- 공유 네트워크 클라이언트 객체 같은 불변 정적 데이터에 쉽게 접근할 수 있는 static 메서드

 

https://cat-servant.tistory.com/113

 

[ Android ] Application Class

책에 있는 코드를 공부하던 중 Application class를 상속받은 class를 작성한 것을 보아서 Application class에 대해 공부해보았다. 틀린 내용이 있으면 댓글로 알려주시면 감사하겠습니다!  Application Class

cat-servant.tistory.com

Application 클래스는 어느 컴포넌트(액티비티, 서비스, 인텐트 등)에서나 공유할 수 있는 전역 클래스를 의미한다. Application을 상속받은 클래스는 공동으로 관리해야 하는 데이터를 작성하기에 적합하다. Application 클래스는 다른 서브 클래스보다 먼저 인스턴스화된다. 일반적으로 서브 클래스 Application을 필요로 하지 않는다. 대부분 static singleton이 모듈적인 방법으로 동일한 기능을 제공할 수 있다. 만약 싱글톤 클래스가 전역 컨텍스트(브로드캐스트 리시버 등록 등)를 요구할 경우, 컨텍스트를 Context.getApplicationContext()로 써서 싱글톤 클래스의 getInstance()를 호출하라

 

정리하면 Application 클래스는 이런 것이다.

 

  • 클래스를 만들고 Application 클래스를 상속한 뒤, 매니페스트의 android:name 속성에 등록해서 사용한다
  • 어떤 값을 액티비티, 서비스 등 안드로이드 컴포넌트들 사이에서 공유해 사용할 수 있게 해준다
  • Application을 상속받은 클래스는 1번째 액티비티보다 먼저 인스턴스화된다

 

내 경우 로그 라이브러리 중에 Logger라는 게 있는데, 이것의 초기화 코드를 Application을 상속한 클래스에 넣어서 매니페스트에 넣어 사용한다. 그리고 카카오 로그인도 App이라는 클래스를 만들고 여기에 관련 코드들을 넣은 뒤, 매니페스트에 넣어서 사용한다.

반응형
Comments