Je suggère de créer une classe de modèle (appelons-le MyModel
) et de créer l'objet de cette classe dans Application.onCreate
(pas Activity.onCreate
).
Après que l'ajout getter pour cela, afin que vous puissiez obtenir ce modèle de toute Activity
ou Service
comme ceci:
MyApplication app = (MyApplication) getApplication();
MyModel model = app.getMyModel();
User user = model.getCurrentUser();
etc.
également la création d'BaseActivity
classe peut vous éviter de taper si vous créez la méthode il protected MyModel getModel()
qui renvoie le modèle des 2 premières lignes du code ci-dessus.
Edit:
Vous devez créer une classe qui étend Application
et enregistrer cette classe dans AndroidManifest.xml
.
Voici comment: https://stackoverflow.com/a/2929927/2183804
Modifier (environ singleton):
Il est dit d'être un anti-modèle (non seulement sur Android). Dans Android, j'ai vu des gens se terminant par singleton avec accesseur comme MySingleton.getInstance (Context), parce qu'ils avaient besoin de Context de toute façon, par exemple. pour SharedPrefs ou accès DB. C'est ce que l'application est pour, il n'est donc pas nécessaire de créer une entité hackish supplémentaire, qui pourrait être utilisée de manière incorrecte: MySingleton.getInstance (null) à partir d'un endroit où il n'y a pas de contexte disponible. Cela pourrait conduire à NPE après le processus est tué et redémarré.
Comment voulez-vous utiliser mediator? Vous voulez probablement éviter Singleton. –
@ MaciejGórski par exemple j'ai un objet utilisateur que toutes mes activités doivent connaître. Et pourquoi vouloir éviter singleton? –