Diferença entre Context e Activity

Bom, eu sei que Context é uma activity, mas qual a diferença entre os dois? Quando usar um e quando usar outro?

Obrigado.

Olhando do ponto de vista MVC, a activity pode ser comparada a uma View+Controller, esta é responsável por definir e controlar uma tela.

Existem 2 tipo de context:
Activity Context, é o contexto de uma tela (alocado quando enquanto uma activity é criada e cada activity tem um context), ou seja, ao exibir uma Dialog é preciso saber em que contexto (Sobre que tela) ela vai ser exibia.
Application Context, é o contexto da aplicação, este esta sempre em memoria ao longo que a aplicação esta rodando. Uma utilização para esse contexto é chamar uma Toast, não importa a tela que esteja sendo apresentada, o Toast vai ser apresentada sobre a aplicação, ou seja, o contexto para exibir é a aplicação.

Em suma, Context é dependente de uma activity… e quando você usa “this” em um Dialog ou Toast você esta passando o Context da Activity em exibição.

Ps. É de boa práticas manter o Context da activity apenas na Activity por causa de uso de memoria… quando não há outro meio use, mas deixe em ultimo caso.