どのContextを使えばいいの?
Activity内でContextを引数に求められるメソッドを使うとき、以下の3つの選択肢がある。
- this(=Activity)
- getApplicationContext()
- getBaseContext()
で、どれを使えばいいのか?という話の結論からすると、基本的にgetApplicationContext()になる。
getApplicationContext()は名前のとおり、アプリケーションのライフサイクルと同じなので、どこで使おうとメモリーリークの心配はない。
が、Activityはそうではないので使い方によってはメモリーリークの可能性が起こる。参考:Weak Referencesから学ぶJavaにおけるオブジェクトの4種類の参照
ActivityはContextを継承しているから、Contextを求めるメソッドの引数として渡せるわけだけど、そもそもActivityを渡さなければいけないメソッドだったら、引数にActivityを求めてくるはず。
ということで、getBaseContext()が残るわけだけど、これはAndroidの中の人が「使うな」と言ってるから使っちゃダメらしい。理由はわからない。察しろ。
それかヨシズミに聞け。