android: comment utiliser getApplication et getcontexteapplication de non activité / service de classe
Je suis en utilisant l'extension de la classe d'application sur Android pour partager mes données à l'échelle de l'ensemble de l'application.
Je peux utiliser getApplication()
méthode de toutes mes activités.
Cependant, il existe certaines personnalisé des classes d'aide, j'ai créé; par exemple, un XMLHelper
classe qui n'hérite pas de toute activité /service de la classe.
Ici la getApplication()
méthode n'est pas disponible.
Comment puis-je régler cette question et quelles sont les meilleures pratiques de conception pour résoudre ce problème?
Vous devez vous connecter pour publier un commentaire.
La
getApplication()
méthode est situé dans leActivity
classe, c'est pourquoi vous ne pouvez pas y accéder à partir de votre classe d'aide.Si vous avez vraiment besoin pour accéder à votre contexte de l'application à partir de votre aide, vous devez maintenir une référence à l'activité du contexte et de le passer sur l'invocation de l'aide.
La
getApplication()
méthode est situé dans leActivity
classe, de sorte que chaque fois que vous voulezgetApplication()
, dans un non-activité de la classe, vous devez passer unActivity
exemple, le constructeur de cette non activité de la classe.supposer que le test est ma non activité de la classe:
Dans la classe que j'ai créé un constructeur:
En jetant un objet de Contexte à un objet d'Activité compile bien.
Essayez ceci:
((Activity) mContext).getApplication(...)
Passer soit dans un Contexte (de sorte que vous pouvez accéder à des ressources), ou prendre l'aide de méthodes statiques.
Afin d'éviter de passer cet argument que j'utilise la classe dérivée de l'Application
et invoquer
MyApplication.getContext()
dans des classes d'aideL'envoi de votre contexte d'activité à d'autres classes pourraient causer memoryleaks parce que la tenue de ce contexte vivant, c'est la raison pour que le GC ne peut pas détruire l'objet
essayer cela, l'appel de l'activité dans le constructeur