Разница между базовым контекстом, контекстом приложения и контекстом активности

Какова фактическая разница между getBaseContext(), getApplicationContext() и контекстом активности, которую мы получаем по ActivityName.this?