【Android】Contextについて
- Contextとは
- Androidによって、実装が提供されているクラス
- アプリケーションとのインターフェースの役割をしていて、アプリ名の取得(getPackageName)などのアプリのリソースなどを取得できる
- AppCompatActivity(Activityが継承するクラス)もContextを継承しているので、intentなどの引数にAcitivity.thisで渡せる
Contextの2つの取得方法
-
Contextを取得する方法は、2つあります。
- 1つめは、Activityでthis 例: MainActivity.this
- 2つめは、getApplicationContextを使う
-
以下に、それぞれについてまとめる
それぞれの使い分け
-
ApplicationContextを使うタイミング
- Acitivityのライフサイクルより長い時間使いたい場合
- Acitivityから取得するContextはActivityのライフサイクル依存するため、それよりも長い期間使用したい場合は、こちらを使う感じになると思います。
- Acitivityのライフサイクルより長い時間使いたい場合
-
ActivityのContextを使うタイミング
- いろいろ調べたところ、基本的にはこちらを使うので問題ないのではと思っています。
- 例えば、viewに渡すcontextはこちらの方がよく、なぜならActivityに適用したテーマなどが反映されなくなるためです。
まとめ
- Contextとは、アプリケーションとのインターフェースになるクラス
- 取得方法は、2つ( getApplicationContext, Activity.this)
- 大体は、Activity.thisで取得する方がいいんじゃないのか。