【Kotlin/Android】Applicationクラスを追加する方法!アプリ全体で使用する汎用クラス

この記事からわかること
- Android Studio/KotlinでApplicationクラスの使い方
- 追加する際の注意点
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
Applicationクラス
Application
クラスはグローバルなアプリケーションの状態を維持するための基本クラスであり、Application
を継承したサブクラスを実装すればアプリ全体(全てのActivityやFragment)からそのクラスを利用することができるので共有の処理やアプリの根幹部分などの実装に活用することができます。
Application
を継承したクラスはアプリが起動する際に自動でインスタンス化され、アプリが終了する際に破棄されます。そのためApplication
クラスを追加した場合は「AndroidManifest.xml」ファイルにandroid:name
属性を追加し値にアプリケーションクラス名
を渡す必要があります。
実装方法
Application
クラスを継承した任意のアプリケーションサブクラスを定義します。中には共有で活用したい処理を実装します。ライフサイクルメソッドも用意されておりインスタンス生成時に呼ばれるonCreate
とインスタンス破棄時に呼ばれるonTerminate
があります。
class RootApplication : Application() {
/**
* [Repository]など共有したいデータや何かしらの状態[State]などを管理させる
*/
/**
* インスタンス生成時
*/
override fun onCreate() {
super.onCreate()
}
/**
* インスタンス破棄時
*/
override fun onTerminate() {
super.onTerminate()
}
}
AndroidManifest.xmlを更新
サブクラスを定義したらアプリ起動時にインスタンス化されるように「AndroidManifest.xml」ファイルのapplication
タグの中にandroid:name
属性を追加します。
<application
android:name=".MainApplication">
// 〜〜〜〜〜〜〜〜〜〜
</application>
インスタンス取得方法
自動でインスタンス化されたアプリケーションサブクラスを取得するためにはContext#getApplicationContext()
やActivity#getApplication()
などを使用して取得し、サブクラスにキャストすることで利用することができるようになります。
// コンテキスト:Context#getApplicationContext()
val application = context.applicationContext as RootApplication
// ActivityやServiceなど Activity#getApplication()/Service#getApplication()
val application = application as RootApplication
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。