Lorsque je développe des applications Android, j'aime jeter un coup d'œil aux implémentations internes du SDK. C'est un énorme Framework et parfois cela aide beaucoup si vous savez comment les méthodes internes sont implémentées.
La dernière vérification des sources que j'ai faite est vraiment déroutante pour moi. J'ai regardé Context
pour lire certaines implémentations. Malheureusement, la plupart d'entre elles sont abstraites, c'est pourquoi Android a inventé le ContextWrapper (un modèle d'adaptateur simple).
Le problème est que je n'ai pas pu trouver certaines méthodes qui m'intéressent. Prenons getResources
comme exemple. J'ai un ContextObject et j'appelle getResources sur celui-ci. Ce Contexte est une instance de Activity
(qui ne met pas en œuvre getResources()
par lui-même).
Même chose pour ContextThemeWrapper qui est la classe mère directe de Activity. Le ContextWrapper invoque ensuite getResources()
sur son Context
membre. Mais qui la met en œuvre alors ?
EDIT : ajout du Snippet de ContextWrapper
public class ContextWrapper{
Context mContext
public ContextWrapper(Context ctx){
mContext = ctx
}
public Resourced getResources(){
return mContext.getResources()
}
//... all other Methods are implementing the same AdapterPattern
}
donc la question peut aussi être "quel Contexte est passé au ContextWrapper, qui implémente les méthodes requises".