2010-11-25 13 views
8

Tengo una aplicación Meteorológica con cuatro actividades. La actividad principal/lanzador es 'invisible' usando ...Compartir un objeto entre actividades

android: theme = "@ android: estilo/Theme.Translucent.NoTitleBar" `

... y se utiliza simplemente para hacer algunas verificaciones (ya sea una nueva instalación, si hay una conexión de red disponible, etc.) antes de desconectar una de las otras actividades. Las otras actividades están orientadas a la interfaz de usuario: dos simplemente muestran los datos meteorológicos extraídos de un sitio web y el tercero para proporcionar un "selector" de ubicación para que el usuario pueda elegir el área para mostrar el clima.

Sin embargo, las cuatro actividades hacen uso de un objeto WeatherHelper que básicamente hace todo desde verificar el almacenamiento de la tarjeta SD disponible hasta mantener las preferencias y extraer/formatear las páginas web.

Entonces, mi pregunta (s) ... ¿cuál es la mejor manera de tener una instancia de WeatherHelper que pueda ser utilizada por múltiples actividades y dónde/cómo es mejor crearla en mi caso?

He sido programador de OO durante muchos años, pero soy muy nuevo en Android y en los conceptos de diseño. He leído mucho en el sitio de Desarrolladores de Android durante las últimas semanas, pero me he detenido intentando para decidir sobre esto

Todas las ideas fueron recibidas con gratitud.

Respuesta

12

Yo almacenaría información compartida en usted Application objeto. Subclass this y agregue cualquier inicialización adicional y datos allí. Puede obtener su aplicación utilizando getApplication() de su actividad, que puede convertir a su versión especializada y acceder a los datos compartidos.

También evitaría iniciar la actividad especial de inicio si es posible y realizar el trabajo en la sobrescritura onCreate() de la aplicación.

+0

¡Gracias! Un caso de no poder "ver la madera para los árboles": me concentraba tanto en las actividades, no veía el panorama completo. Estoy de acuerdo con evitar la actividad de inicio (no me gusta hacerlo de esa manera): la anulación onCreate() de la aplicación puede ser un mejor enfoque. – Squonk

+0

Otra solución perfectamente aceptable es usar un Singleton, que se puede inicializar de forma diferida. – dhaag23

1

Bueno, tu pregunta ha sido contestada, pero parece que sería mucho más simple para crear instancias de su objeto WeatherHelper en el onCreate() del Activity que tiene la intención lanzador, y hacer que el WeatherHelper estática.

+0

Pensé que estaban vivos durante toda la vida de la aplicación completa. Sin embargo, podría estar equivocado. – Snailer

+0

Gracias por la sugerencia Snailer - era una opción que había estado considerando pero soy nuevo en Java desde un fondo C++ y C# donde 'estático' tiene (algunas) implicaciones diferentes - Voy a dejar de experimentar hasta una fecha posterior. – Squonk

+0

No hay problema. ¡Soy nuevo en Java también, solo estoy tratando de ayudar! – Snailer

Cuestiones relacionadas