¿Cuál es la mejor manera de tratar con el objeto JSON?

Tengo una cadena grande que representa el feed de JSON. Mi aplicación descarga este feed desde el servicio web remoto.

Preguntas:

1) Una vez que descarga el feed de JSON, ¿dónde debo almacenarlo? Ahora mismo lo estoy almacenando en las Preferencias de la aplicación y funciona bien. Sólo estoy interesado si hay alguna razón para no hacerlo, o si hay opciones mejores / más rápidas, como almacenamiento interno o algo más?

2) Cuando estoy a punto de mostrar datos de este feed en mi actividad, hago algo como esto:

JSONObject jsonObj = new JSONObject(json_string); JSONArray jsonArr = jsonObj.getJSONArray("root"); for (int m = 0; m < jsonArr.length(); m++) { .... } 

El problema es que la primera línea que analiza el feed de JSON es algo caro. En mi tamaño actual de alimentación (que podría crecer en el futuro) se tarda quizás medio segundo para completar, no mucho, pero sigue siendo un problema. Por ejemplo, hago clic en el botón para llamar a la actividad (para mostrar datos) y esta pausa de 1/2 segundo es notable y no es buena.

Para evitar esta pausa, probablemente debería analizar JSON inmediatamente después de descargar el feed. Entonces pregunta es, ¿dónde debo mantener analizados objeto JSON?

I) No puedo guardar el objeto JSON en las preferencias ya que sólo los datos primitivos pueden almacenarse allí.

Ii) ¿Debo hacer el análisis sintáctico cada vez que empiece mi aplicación, y hacer que mis objetos JSON analizados (tengo más de ellos) sean globales (a nivel de aplicación) para poder acceder a ellos desde todas mis actividades?

Iii) O, creo que mi tercera opción sería declarar JSON objests estático para que puedan ser de fácil acceso de otras actividades?

¿Cuál es la mejor manera de hacer esto?

GRACIAS.

Si la velocidad es verdaderamente un problema, una forma fácil de acelerar significativamente el análisis sintáctico (así como de escribir) de los datos JSON sería usar a Jackson para analizar datos JSON. En comparación con la librería org.json (que incluye SDK de Android) es al menos 3 a 5 veces más rápida si sólo desea analizar los mapas o las listas (http://www.cowtowncoder.com/blog/archives/2009/02/ Entry_204.html). Pero si se puede vincular a los objetos Java es aún más rápido y utiliza menos memoria también.

Si desea guardar datos JSON, normalmente sólo se serializa como archivos, o como BLOB en bases de datos; Pero a menos que realmente tengas que hacerlo, es mejor simplemente aferrarse a los objetos Java creados a partir de datos JSON.

¿Necesita guardarlo? Si lo descarga una vez desde una página web y eso es todo lo que necesita, almacenarlo en las preferencias compartidas está bien. Si necesita obtenerlo mucho, ¿por qué incluso almacenarlo? También se puede almacenar en el directorio caché

Parece que debería usar la base de datos SQLite para almacenar los valores que extraiga del JSON. Esto debería ayudarle a empezar: http://developer.android.com/guide/topics/data/data-storage.html#db

Todas sus actividades dentro de su aplicación pueden consultar la base de datos para los datos. Si está utilizando un ListView para ver la información, podría utilizar un CursorAdapter para llenar fácilmente la lista.

Incluso puede crear un proveedor de contenido para compartir esta información con otras aplicaciones

  • Android: Recuperación de preferencias compartidas de otra aplicación
  • ¿Cómo cambiar el idioma de toda una aplicación Android?
  • Atributo de visibilidad en las preferencias xml no funciona? (Android 2.3)
  • Cómo borrar las viejas preferencias al actualizar la aplicación de Android?
  • Archivo de preferencias del usuario vs Archivo de preferencias de la aplicación
  • Iniciar una actividad desde preferences.xml
  • Cómo detectar cuándo una PreferenceScreen interna ha sido cerrada
  • ¿Cómo obtengo las preferencias para trabajar en Android?
  • El método onPreferenceChange no se llama cuando los cambios de Listpreferences
  • ¿Cómo hago "subcategorías" en Preferencias
  • ¿Qué sucede con los datos existentes de las preferencias del usuario de Android cuando las preferencias estructuran los cambios en una nueva versión?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.