What is the difference between `getContext()` , `getApplicationContext()` , `getBaseContext()` , and "`this`"? 

Though this is simple question I am unable to understand the basic difference between them. Please give some easy examples if possible.