2011-07-10 20 views
6

Voy a hacer la aplicación más específicamente un juego para teléfono Android.Singleton vs Intents (Android)

Voy a tener múltiples actividades y muchas clases, así que estoy pensando en el almacenamiento de los datos del juego.

Los datos del juego deberían estar visibles para las actividades, así que estoy pensando si debería usar Singleton para almacenar datos allí y recibirlos fácilmente de cualquier actividad o debería pasar datos usando Intents.

Habrá pequeñas cantidades y grandes cantidades de datos (pequeños como puntajes, grandes como mapas, etc.).

Para las puntuaciones, usaría intenciones pero ¿no sería mejor hacer todo de la misma manera? Y si es así, creo que un singleton con estado de juego completo sería mejor. ¿Algunas ideas?

+1

Si necesita los mismos datos visible para múltiples actividades, use un singleton. Si solo necesita notificar la siguiente Actividad de algunos datos en particular, use extras en su Intento. Personalmente, creo que es mejor usar ambos; no son mutuamente excluyentes. –

+1

Dado que se trata de un juego, otro buen ajuste sería ServiceLocator: http://gameprogrammingpatterns.com/service-locator.html – mibollma

Respuesta

1

Cuando necesito datos que es utilizado por múltiples actividades Acabo de crear una clase de aplicaciones personalizadas y luego se usa eso como "Singleton" y funciona bien ya que cada actividad puede entonces acceder el contexto de aplicaciones personalizadas

Para do que se inician mediante la creación y la clase de aplicación extendida

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

Agregue esto a su manifiesta por lo que sabe usar que en lugar de la aplicación por defecto

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

A continuación, agregue cualquier método personalizado que desea todas sus actividades para tener acceso a, y desde cada uso actividad algo así como

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

También puede ver Application para más detalles

+0

¿Qué quiere decir con aplicación personalizada. ¿Solo una clase normal de patrón único? También estoy preguntando qué es mejor en términos de buenas prácticas y uso de memoria/CPU. – Taks

+0

@Taks puede crear una clase de aplicación personalizada. Enmendaré la respuesta anterior, espere – Idistic

+0

Haga lo mismo aquí. Funciona genial. –