¿Por qué getApplicationContext () en el constructor de Activity arroja una excepción de puntero nulo?

Después de un tiempo dedicado a la búsqueda de errores, resulta que:

public class MainActivity extends BaseActivity { // BaseActivity extends Activity public MainActivity() { super(); getApplicationContext(); // NPE here } } 

Por qué ? ¿Dónde está esto documentado?
Froyo

Espere hasta el final de onCreate para llamar a este método.

 public class MainActivity extends BaseActivity { public onCreate(Bundle savedInstanceState) { super(savedInstanceState); getApplicationContext(); //activity has a context now } } 

Solo para tener una idea de lo que está pasando. La actividad extiende ContextThemeWrapper que extiende ContextWrapper de quien Activity hereda getApplicationContext() . ContextWrapper lo implementa como :

 @Override public Context getApplicationContext() { return mBase.getApplicationContext(); // mBase is a Context } 

El único constructor público de ContextWrapper es:

  public ContextWrapper(Context base) { mBase = base; } 

en ContextThemeWrapper tenemos :

  public ContextThemeWrapper() { super(null); } 

y como Activity no define un constructor explícito, el constructor anterior se llama – mBase == null en el constructor de Activity – boom.

Enlaces desde 4.2.2_r1