diferença e quando usar getApplication (), getApplicationContext (), getBaseContext () e someClass.this

Eu sou novo no android e estou tentando entender a diferença entregetApplication(), getApplicationContext()getBaseContext(), getContext() esomeClass.this e especialmente quando usar esses métodos nas seguintes linhas de código:

Quando eu lanço um brinde qual é a diferença entre estes e em quais casos eu os uso?

<code>Toast.makeText(LoginActivity.this, "LogIn successful", Toast.LENGTH_SHORT).show();
Toast.makeText(getApplication(), "LogIn successful", Toast.LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), "LogIn successful", Toast.LENGTH_SHORT).show();
Toast.makeText(getBaseContext(), "LogIn successful", Toast.LENGTH_SHORT).show();
</code>

mesmo com intenções:

<code>Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
Intent intent = new Intent(MenuPagina., LoginActivity.class);
Intent intent = new Intent(getBaseContext(), LoginActivity.class);
Intent intent = new Intent(getApplication(), LoginActivity.class);
</code>

questionAnswers(4)

yourAnswerToTheQuestion