Sto aiutando messo insieme questa pagina: What is a context?Come viene creato un contesto in Android? Qual è lo scopo di ContextThemeWrapper?
per illustrare come i componenti sono collegati ad una Context
, ho creato questo schema di guardare attraverso il codice sorgente di quadro:
Dopo aver scavato un po 'intorno, ho avuto le seguenti domande:
- ciò che crea un
Context
e cosa concr vengono utilizzate le classi ete? La classe baseContext
è una classe astratta, che richiede l'implementazione di quasi tutti i suoi metodi. E unContextWrapper
, quando viene istanziato, richiede che venga passata l'istanzaContext
come contesto di base, quindi deve esserci almeno una classe di calcestruzzoContext
. - Capisco che lo
ContextWrapper
e le sue sottoclassi utilizzino il pattern wrapper/decoratore per aggiungere funzionalità alla classeContext
di base, se necessario. Qual è lo scopo delloContextThemeWrapper
? Sostituisce alcuni metodi, ma se sta eseguendo il wrapping di una baseContext
, perché non delegare semplicemente le chiamate alla baseContext
? Ad esempio, la classeActivity
estendeContextThemeWrapper
, che fornisce un'implementazione specifica pergetTheme()
esetTheme()
. Perché?
I documenti java per sviluppatori Android sono un po 'vaghi. Per esempio, ContextWrapper
In realtà sono riuscito a entrare in un'app e ho trovato la classe concreta che 'Activity' e' Application' usano come 'mBaseContext'. È 'ContextImpl'. https://github.com/android/platform_frameworks_base/blob/master/core/java/android/app/ContextImpl.java – orangemako