Contextって何者?
Androidではよく引数にcontextを渡すことがあります。(画面遷移のintent作成時など。)
私もAndroidアプリを開発を始めた際に、疑問に思ったことがあります。
ですので、今回はこのContextに注目してみようと思います。
大まかに2種類あるContext
実はAndroidにおけるContextは大きく分けて以下の2種類があります。
- Application Context
- Activity Context
今回はApplication Contextについて考えてみて、明日Activity Contextについて記載したいと思います。
Contextとは
まず、公式サイトの内容を見てみたいと思います。
https://developer.android.com/reference/android/content/Context
Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc.
などと記載されていますが、要約すると、「アプリケーション環境に関するグローバル情報へのインターフェイスで、このクラスによってAndroid側のシステムの値やメソッドにアクセスできる。」ということだと思います。
Application Context
では、先ほどから出てきているApplication Contextについてですが、
そもそものApplicationクラスを見てみると、Contextクラスを継承しています。
https://developer.android.com/reference/android/app/Application
そのためApplication Contextは、アプリで基本的に一つしか存在しません。
(明日も記載しますがActivity Contextは違います。)
これはとても大切なことでこのことを理解せずに実装すると、メモリリークを起こす可能性があります。
こちらに関しては、以下の記事などに詳しく記載されていましたのでここでは割愛します。
https://blog.meilcli.net/2018/12/26/185752
https://qiita.com/roba4coding/items/0585b8240873ec5e9c20
ということで、少しはContextについて理解できましたでしょうか?
明日はもう一つのActivity Contextについて記載したいと思います!
ではまた明日