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

この記事からわかること

  • Android Studio/KotlinApplicationクラス使い方
  • 追加する際の注意点

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

Applicationクラス

公式リファレンス: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

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index