-
Accessibilité du Context
Bonjour,
Toujours sur mon projet android, je me posais une question. Pour l'instant je fais des trucs tout bête, j'ai une seule vue ( Activité ? ) et je m'entraîne à lister des fichier, faire des notifications, etc etc ...
Au début je faisais tout dans la classe correspondant à ma vue ( MainActivity ), mais j'ai commencer à fragmenter mon code. Or, sur une classe externe, du genre Logs, j'ai besoin de récupérer le contexte pour afficher un toast.
Si j'ai bien compris, le contexte est une espèce d'interface qui donne des infos sur l'activité. Donc, 1 contexte / activité ?
J'ai réussi à faire une bidouille, dans la classe de mon activité ( MainActivity ), j'ai créé une variable statique contexte, avec un getter static dessus. Je peux donc l'utiliser dans mes classes secondaires et tout fonctionne. Est-ce propre ?
De même, faut-il que je fasse ça sur chacune de mes vues ?
Merci !
Julien
-
Non pas du tout propre, et même interdit.
Un "Context" peut être assez gros (par exemple dans une activité, c'est l'objet Activity lui-même, et donc toute la hiérarchie de views associées). Les risques de memory-leaks sont bien trop importants.
Si un objet est "graphique" (utilisé que dans le cadre de l'UI) alors il peut contenir un pointeur sur context (en variable membre) et prendre celui-ci en paramètre à la construction.
Si une fonction non "graphique" doit utiliser un contexte, alors faire comme le SDK android, le demander en paramètre à la fonction !
A noter que toutes les "View" permettent de récupérer le contexte associé avec la fonction getContext()... donc si vous stockez déjà une View, inutile de stocker le contexte. Idem si vous recevez une View en paramètre, vous aurez là encore le contexte !
-
Bonjour,
Donc si j'ai bien compris, je ne peux pas utiliser ma technique de feignant, et je dois passer systématiquement en paramètre le contexte / la vue en paramètre dans la méthode ?
Zut alors c'est pas pratique ! :mouarf: