これは、アドベントカレンダーの2日目の続きになります。
そちらがまだの方は、2日目を先に読んでいただけると幸いです。
https://qiita.com/minomusi/items/78693966e99f05af3e00
それでは行きましょう!
Activity Context
これは、その名前の通りActivityに依存したContextになります。
よってActivityのライフサイクルにより発生、消滅します。
これが重要な観点になります。
Contextの誤用によるメモリリーク
contextの寿命と使用箇所の寿命を考えた時に、
context > 使用箇所の関係になっていると、メモリリークが発生してしまう可能性があります。
具体的には、シングルトンなどのインスタンスでActivity Contextを渡した場合などが考えられます。
上記の場合などは、Application Contextを使用するようにしましょう。
Contextの使い分け関する私の考え
基本的に迷ったら、Application Contextを使えば良いのではないかと考えています。
そうすることで、消滅のタイミングなどを自身で管理しなくて良くなり、考えることが減ります。
ただ、限定的に使いたいなどの場合には、Activity Contextを使用する方が良いと考えられます。
この辺りは、実装を多く経験していくと判断することが可能になってくるかなと思います。
以上でContextに関する記載を終わりにします。
では、また明日〜