AndroidにおけるContextについて

Androidアプリを作っていると、一度はContextを目にする。
このContextにも、おおよそ2種類ある。

・ApplicationContext
通常はActivity内からgetApplicationContext()で取得可能(Context型)
アプリそのもののContextと考える。

・ActivityContext
現在開いているActivityのContext。
Activity内でthisとして取得可能。(Context型だが、Activity型にキャスト可能)

どちらも、取得した際にはContext型となる。
ここが、やや厄介なところ。
メソッドにより、片方のContextしか受け付けない場合があり、
IDEでもエラーは出ない。

例として、dialogをrunonuithreadから出力するときなどは、ActivityContextが必要になる。
ApplicationContextだとUnable to add windowとなり失敗する。

またContentResolverをActivityが開いていない状態でいじる際には
ApplicationContextが必要になる。


もしわからないときは、リファレンスを熟読し、親がどういったクラスなのかといったポイントから
読み取っていく必要がある。