2015-07-16 6 views
13

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:

Context Subclasses

Dopo aver scavato un po 'intorno, ho avuto le seguenti domande:

  1. ciò che crea un Context e cosa concr vengono utilizzate le classi ete? La classe base Context è una classe astratta, che richiede l'implementazione di quasi tutti i suoi metodi. E un ContextWrapper, quando viene istanziato, richiede che venga passata l'istanza Context come contesto di base, quindi deve esserci almeno una classe di calcestruzzo Context.
  2. Capisco che lo ContextWrapper e le sue sottoclassi utilizzino il pattern wrapper/decoratore per aggiungere funzionalità alla classe Context di base, se necessario. Qual è lo scopo dello ContextThemeWrapper? Sostituisce alcuni metodi, ma se sta eseguendo il wrapping di una base Context, perché non delegare semplicemente le chiamate alla base Context? Ad esempio, la classe Activity estende ContextThemeWrapper, che fornisce un'implementazione specifica per getTheme() e setTheme(). Perché?

I documenti java per sviluppatori Android sono un po 'vaghi. Per esempio, ContextWrapper

+0

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

risposta

6

Risposta # 2:

ContextThemeWrapper aggiunge il supporto dei temi ad un contesto, altrimenti non è possibile applicare qualsiasi tema alle viste create. Ecco perché i layout delle attività supportano i temi, mentre i layout dei widget non lo fanno, per esempio. È inoltre possibile creare autonomamente ContextThemeWrapper per sovrascrivere il tema corrente con un altro.

+0

Ci scusiamo per la domanda stupida, ma per favore dimmi qual è il layout di attività e il layout dei widget? – CopsOnRoad