Ho cercato su Android sources solo per interesse. Quello che ho trovato è che Context
è una classe astratta con metodo astratto:Dov'è il codice chiamato quando si chiama getApplicationContext()?
public abstract Context getApplicationContext();
Il ContextWrapper.java
estende Context.java
che ha portato alla realizzazione di getApplicationContext()
metodo:
@Override
public Context getApplicationContext() {
return mBase.getApplicationContext();
}
Ma mBase
è riferimento a un oggetto di tipo Context
che è inizializzato nel costruttore ContextWrapper
:
public ContextWrapper(Context base) {
mBase = base;
}
Quindi questo riferimento mBase
si riferisce alla classe abstract
? Beh, io non capisco dove è il codice che viene eseguito quando chiami getApplicationContext()
dal tuo Activity
.
Avete capito come funzionano le classi astratto? C'è qualche classe concreta da qualche parte che "estende Context", ed è qui che il metodo è implementato. –
Sono interessato dove è, ho capito come funzionano le classi astratte. – Eugene