AndroidのAPIでContextを引数に取るものが結構あるが、Activity自体が渡せたり、またActivity
からContext
を取得するメソッドが複数あって
どれを使うべきか、はたまたgetApplicationで取得できるApplicationもContext
を継承していて、どれをつかったらいいの?と悩む。
Activity
はアクティビティ単位なので、別のアクティビティに遷移するとContextも変わるApplication
は起動中のアプリに対して1個存在して、Context
も1つ。アプリが生きている間存在する- アクティビティが変わっても同じ内容
Activity#getApplicationContext
とActivity#getApplication
をContext
として渡すのは内容的には同じ
getBaseContext
は別のアプリとやりとりするとき用
Context
としてActivity
を渡す場合、メモリリークに気をつけること:Avoiding memory leaks | Android Developers BlogBroadcastReceiver
を登録する場合には、Application
に登録するとアプリを超えて生き続けてしまう:Yukiの枝折: Android:引数はthisか?getApplicationContextか?ActivityとApplicationの違い