2011-07-10 4 views
6

Je vais faire une application plus spécifiquement un jeu pour téléphone Android. Je vais avoir plusieurs activités et beaucoup de classes donc je pense au stockage des données du jeu.Singleton vs Intents (Android)

Les données du jeu devraient être visibles pour les activités donc je pense que je devrais plutôt utiliser singleton pour y stocker des données et les recevoir facilement de toute activité ou devrais-je plutôt transmettre des données en utilisant Intents?

Il y aura de petites quantités et de grandes quantités de données (petites telles que le score, grandes telles que les cartes, etc.).

Pour les scores j'utiliserais des intentions mais alors ne serait-il pas préférable de tout faire de la même manière? Et si oui, je pense qu'un singleton avec un état de jeu entier serait mieux. Des idées?

+1

Si vous avez besoin des mêmes données visible à plusieurs activités, utilisez un singleton. Si vous avez juste besoin de notifier l'activité suivante de certaines données, utilisez des extras dans votre intention. Personnellement, je pense qu'il est préférable d'utiliser les deux; ils ne sont pas mutuellement exclusifs. –

+1

Comme c'est un jeu un autre bon ajustement serait ServiceLocator: http://gameprogrammingpatterns.com/service-locator.html – mibollma

Répondre

1

Lorsque j'ai besoin de données qui est utilisé par de multiples activités que je viens de créer une classe d'application personnalisée, puis utilisé que comme mon « Singleton » et il fonctionne très bien puisque chaque activité peut alors accéder au contexte d'application personnalisé

Pour ne qui commencent par la création et la classe étendue d'application

public class MyApplication extends Application { 
    // Details left blank 
} 

Ajoutez ceci à votre manifeste de sorte qu'il sait utiliser à la place de l'application par défaut

<application 
     ... 
     android:name=".MyApplication" 

ajouter ensuite des méthodes personnalisées que vous voulez toutes vos activités d'avoir accès et de chaque activité utiliser quelque chose comme

((MyApplication)this.getApplicationContext()).myMethod() 

Vous pouvez également voir Application pour plus de détails

+0

Qu'entendez-vous par application personnalisée. Juste un cours normal de singleton? Je demande également quel est le meilleur en termes de bonne pratique et d'utilisation de mémoire/CPU. – Taks

+0

@Taks vous pouvez créer une classe d'application personnalisée Je vais modifier la réponse ci-dessus, attendez – Idistic

+0

Faites la même chose ici. Fonctionne très bien. –