que vous obtenez référence à LayoutInflater
de Context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)
(ViewGroup.inflate
et Activity.getLayoutInflater
ne sont que des emballages pratiques) Je suppose qu'il retourne toujours référence au même service de gonfleur, jusqu'à ce qu'il soit détruit et recréé, puis ce nouvellement créé est retourné, et ainsi sur ... Je suppose que l'objet manager obtenu à partir de la méthode getSystemService est similaire aux objets liants du service "normal".
EDIT: Et dire ci-dessus, je me trompais;)
j'ai vérifié le code source et android.view.ContextThemeWrapper (ce qui est super classe activitie):
@Override public Object getSystemService(String name) {
if (LAYOUT_INFLATER_SERVICE.equals(name)) {
if (mInflater == null) {
mInflater = LayoutInflater.from(mBase).cloneInContext(this);
}
return mInflater;
}
return mBase.getSystemService(name);
}
et Android .app.ContextImpl qui est probablement MBASE mise en œuvre Contexte:
public Object getSystemService(String name) {
ServiceFetcher fetcher = SYSTEM_SERVICE_MAP.get(name);
return fetcher == null ? null : fetcher.getService(this);
}
où: private static final HashMap SYSTEM_SERVICE_MAP = new HashMap(); ServiceFetcher est une classe interne pour la mise en cache et la récupération des "instances de service système".
Ce qui est certain, c'est qu'il y a un LayoutInflater par activité/ContextWrapper. Pour plus d'observations étudier les sources, s'il vous plaît;)
** Malheureusement, il ya des endroits dans mon application où cela ne fonctionne pas. ** Que signifie «ça ne marche pas»? Comme AedonEtLIRA dit dans leur réponse, postez le code qui ne fonctionne pas. – Squonk