Development/Android

Android Application 클래스가 호출되지 않는 경우

Jamie 2022. 2. 3. 15:54
반응형

안녕하세요.

오늘은 내가 생성한 Application 클래스가 호출되지 않는 경우에 대해서 설명하겠습니다.

 

앱을 개발하다보면 여러가지 이유가 있겠지만 보통 전역으로 사용할 수 있도록 최상위의 Application 클래스를 상속받는 경우가 있습니다.

 

다음과 같이 Application을 상속받아서 사용합니다.

예제는 DataStore를 전역으로 사용하기 위해 작성한 코드입니다.

 

import android.app.Application
import android.util.Log
import com.teamgr.sample.db.DataStoreManager

class MyApplication : Application() {

    private lateinit var dataStore: DataStoreManager

    companion object {
        private const val TAG = "MyApplication"
        private lateinit var myApplication: MyApplication
        fun getInstance() : MyApplication = myApplication
    }

    override fun onCreate() {
        super.onCreate()
        Log.d(TAG, "onCreate: called")
        myApplication = this
        dataStore = DataStoreManager(this)
    }

    fun getDataStore(): DataStoreManager = dataStore
}

 

이때 Application 클래스의 onCreate 메서드가 호출되지 않는 경우가 있습니다.

이럴때는 AndroidManifest.xml에 android:name 태그를 추가해주시고 나의 Application 클래스를 지정해주면 됩니다.

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.teamgr.sample">

    <application
        android:name=".MyApplication">
    </application>

</manifest>

 

감사합니다.

반응형