¿Dónde debo guardar y almacenar los datos necesarios en todo el ciclo de vida de las aplicaciones?

Soy bastante nuevo en la programación de Android / Java, por lo que algunas de las cosas básicas sigue siendo bastante confuso. Por lo tanto, digamos que mi aplicación obtiene todos los datos (artículos) que se requiere de los archivos XML externos, se analiza a los modelos de datos (clase de artículo) y los artículos se utilizan (mostrando en las listas o artículo único) en toda la aplicación para todo ciclo vital.

¿Dónde debo guardarlos? ¿Puedo crear una clase singleton con una matriz que contiene todos los artículos que he analizado? ¿O debería guardarlos en la base de datos y luego consultarlo a petición? (Que suena como demasiado trabajo, no tengo que poner en caché por ahora) ¿Cuál es la mejor práctica aquí?

Guárdelos en la Aplicación . Esta es una clase base de cualquier aplicación android y está viva durante toda la vida de la aplicación, mientras que las actividades se eliminan cuando no se muestran o se cambia la orientación.

Tienes que declarar android:name en tu AndroidManifest.xml:

 <application android:name=".YourApplication"/> 

Editado:

Esto también es relevante: ¿Cómo puedo pasar datos entre Actividades / Servicios dentro de una sola aplicación?

Que depende de su estilo de programación lol.

Usted puede como usted dijo crear un singleton que leerá su xml y almacenará todo.

Puede crear un hash estático en su clase. De esta manera, al crear un nuevo objeto, tendrá acceso a la información estática de esa clase.

Puede pasar la información de clase a clase como parámetros.

Si quieres que te digamos cuál sería el mejor será difícil sin conocer la arquitectura de tu programa.

Por ejemplo, podría tener un controlador de vista que manejar cualquier cambio y, a continuación, es fácil almacenar los datos a ese nivel para pasarlo cuando cambia las vistas.

Puede tener vistas estáticas en las que puede establecer directamente todos los valores a medida que los abra.

Usted podría tener vistas ligeramente vinculadas que se llaman entre sí sin ningún controlador para manejar el cambio y en ese caso usted podría preferir tener una manera de recoger la información que necesita de un singleton o un método estático …

Siempre y cuando se asegure de que no tiene ningún hilo que actúe sobre los datos compartidos, sólo puede crear una clase estática con miembros estáticos. Cada actividad podrá acceder a ella. Si utiliza la descarga asíncrona para sus datos, entonces en el onPostExecute de su manejador puede tocar el GlobeVars porque se ejecuta en el subproceso de interfaz de usuario.

 public class GlobalVars { public static String userId = "?"; //public static String serverUrl = "10.0.2.2"; //localhost when developing public static String serverUrl = "192.168.1.4"; //on device to laptop //public static String serverUrl = "102.192.293.10"; //production public static Book currentBook = null; public static Chapter currentChapter = null; public static int lastclickedChapter = -1; public static Voice currentVoice = null; public static String catalogJson = ""; public static ArrayList<Book> catalogItems = null; } 

OnCreate de MainActivity Puedo establecer el catálogo a mi lista descargada de xml cubierto a los objetos

 GlobeVars.catalogItems = downloaded xml to object list 

En mi SubActivity que es una lista de capítulos en onclicklistener puedo establecer:

 GlobeVars.currentChapter = items[clickeditem]; 

Cuando regrese a la actividad principal, los valores se fijarán.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.