시스템바 알림 기능을 구현하는 과정에서, 알림 시간을 표현하기 위해 "오전"과 "오후"와 같은 문자열 값을 리소스에서 불러오려면 context가 필요했다.
하지만 Utils 클래스에서는 context를 직접 참조할 수 없었다.
이 문제를 해결하기 위해 WallPadApp.java 클래스에서 context를 반환하는 함수를 사용했다.
이 과정에서 WallPadApp 클래스의 목적과 그 안에 정의된 함수나 값들이 어떻게 분류되어 있는지에 대한 궁금증이 생겼다.
WallPadApp 클래스를 살펴보니, 이는 Application 클래스를 상속받아 커스터마이즈되어 있었다.
공식문서를 찾아보니,
전역 애플리케이션 상태를 유지하기 위한 기본 클래스입니다. 하위 클래스를 생성하고 이 하위 클래스의 정규화된 이름을 "android:name"AndroidManifest.xml <application>태그의 속성으로 지정하여 자체 구현을 제공할 수 있습니다. Application 클래스 또는 Application 클래스의 하위 클래스는 애플리케이션/패키지에 대한 프로세스가 생성될 때 다른 클래스보다 먼저 인스턴스화됩니다.
다음과 같이 설명이 되어있었는데, 조금 더 이해하기 쉽게 다시 말해 보자면
Application 클래스는 안드로이드 앱의 전역 상태를 관리하는 역할을 한다.
앱이 실행될 때 가장 먼저 생성되며, 앱 전체에 걸쳐 필요한 공유 데이터나 상태를 관리하거나 초기화 작업을 수행하는 데 사용되는 기본 클래스이다.
따라서 WallPadApp 클래스는 애플리케이션 전역에서 관리해야 할 함수나 값들을 보관하고, 필요에 따라 이를 제공하는 역할을 한다.
이 클래스를 통해 애플리케이션의 다양한 부분에서 필요한 context에 접근할 수 있게 되었고, 이는 Utils 클래스 같이 context를 직접 참조할 수 없는 경우에 매우 유용하다.
WallPadApp 클래스가 Application 클래스를 상속받음으로써, 애플리케이션 전역에서 필요한 리소스나 데이터를 효율적으로 관리할 수 있게 된 것 이다.
참고 : https://developer.android.com/reference/android/app/Application