2010-09-03 18 views
1

J'ai défini des variables statiques dans Activités afin de transmettre des données complexes entre Activités.Variables statiques dans Android

Plusieurs personnes suggèrent de ne pas utiliser de variables statiques dans Android. Certaines personnes suggèrent de stocker des données globales dans un android.app.Application personnalisé. Je ne pense pas qu'il y ait une différence entre une variable statique et une application personnalisée. Je voudrais savoir ce que vous pensez des variables statiques. Aucune suggestion?

Merci.

Répondre

0

Cher dieu, ne fais pas ça. Si vous devez passer des objets entre les activités, utilisez un service.

+1

Pourriez-vous me dire pourquoi? Cela provoquera-t-il des résultats d'erreur? Android FAQ dit variable statique est un moyen de transmettre des données entre activités: http://developer.android.com/guide/appendix/faq/framework.html#3 – user256239

+2

C'est juste un mauvais design et défait le but d'être orienté objet Les champs statiques sont normalement utilisés pour lire les données. Si vous passez ou mettez des données dans un statique, vous devriez probablement reconsidérer votre conception. – Falmarri

+0

C'est agréable d'être downvoted pour une réponse d'un an sans aucun commentaire du tout. – Falmarri

0

Les variables statiques sont des variables globales par définition car elles sont étendues à une classe plutôt qu'à une instance. Selon votre conception, il est peut-être préférable/plus propre/plus facile de centraliser ces variables globales plutôt que de les disperser sur une multitude de classes. En outre, dans le génie logiciel traditionnel, les variables globales sont considérées comme une mauvaise chose, et cela est correct, mais lors de la programmation dans une plate-forme Android où les ressources sont rares et l'utilisation optimale des ressources pour améliorer les performances. vous devriez développer avec un état d'esprit totalement différent. Les variables globales ne doivent pas être trop mauvaises dans un tel cas.

Veuillez noter que la plate-forme Android fournit également une interface de service qui pourrait répondre à votre besoin de partager des variables entre les activités.

+3

pourquoi utiliser un service comme stockage de données quand vous avez déjà une classe d'application qui contient des données globales et est facilement accessible dans les activités et les services sans liants gênants? – schwiz

+0

@schwiz Que se passe-t-il lorsque votre application passe en arrière-plan et que seul votre service est en cours d'exécution? Les variables globales de votre application ne seraient-elles pas également collectées? –

+1

@IgorG. Non, vous confondez l'application avec l'activité. L'application restera en mémoire tant que vous avez quelque chose en cours, que ce soit une activité, un service, BroadcastReciever. – schwiz