読者です 読者をやめる 読者になる 読者になる

リア充爆発日記

You don't even know what ria-ju really is.

どのContextを使えばいいの?

ここの要約的な話。
http://stackoverflow.com/questions/1026973/android-whats-the-difference-between-the-various-methods-to-get-a-context

Activity内でContextを引数に求められるメソッドを使うとき、以下の3つの選択肢がある。

  • this(=Activity)
  • getApplicationContext()
  • getBaseContext()

で、どれを使えばいいのか?という話の結論からすると、基本的にgetApplicationContext()になる。
getApplicationContext()は名前のとおり、アプリケーションのライフサイクルと同じなので、どこで使おうとメモリーリークの心配はない。
が、Activityはそうではないので使い方によってはメモリーリークの可能性が起こる。参考:Weak Referencesから学ぶJavaにおけるオブジェクトの4種類の参照
ActivityはContextを継承しているから、Contextを求めるメソッドの引数として渡せるわけだけど、そもそもActivityを渡さなければいけないメソッドだったら、引数にActivityを求めてくるはず。

ということで、getBaseContext()が残るわけだけど、これはAndroidの中の人が「使うな」と言ってるから使っちゃダメらしい。理由はわからない。察しろ。

それかヨシズミに聞け。