sql >> Base de Datos >  >> RDS >> SQLite

Forma / orden recomendada para leer datos de un servicio web, analizar esos datos e insertarlos en una base de datos SQLite

Decidí acudir a ustedes porque son los expertos

primero i am not expert y también i am not knowledgeable puedes encontrar gente más experta que yo pero esta es mi opinión hope to give you some help .

en primer lugar, olvide usar AsyncTask para descargar porque debe usarse para trabajos cortos en segundo plano que no son como el suyo. Creo que la cantidad de archivos que desea descargar es bastante grande. (Eso creo)

comprobar downloadmanager de google para ver cómo funciona, puede ayudarte.

http://developer.android.com/reference/android/app/DownloadManager.html

http://blog.vogella.com/2011/06/14/android-downloadmanager-ejemplo/

si desea utilizar service usar unbound service porque no desea que Android o el usuario destruyan el servicio cuando el usuario cierre las aplicaciones, ¿verdad? Creo que quieres obtener tus datos de cualquier forma.

para ser eficiente recomiendo estos pasos:

una. Lea un servicio reparador para recuperar los datos de los clientes

b. cuando obtenga los datos del cliente, haga:

  • cree otro servicio o hilo para leer un servicio tranquilo para recuperar los datos de los artículos

  • Analice la respuesta a Json Objects en su antiguo servicio o hilo

ahora tiene 2 servicios o subprocesos que se ejecutan simultáneamente, así que siga los pasos que obviamente insert parse y así, en cada servicio o hilo.

¿Por qué no combino a y d? porque creo que al usuario no le gusta esperar mucho tiempo detrás de la barra de progreso de la descarga.

para insertar sus datos en la base de datos, use transaction y te recomiendo que uses:

http://greendao-orm.com/

es más eficiente ORM que otros para la base de datos y se libera de la implementación de db.

Si la actividad que inició el servicio se cancela explícitamente o está oculta por otra actividad, el servicio debe tener una forma de informar al usuario que el proceso ha finalizado. ¿Cómo podría implementar eso?

usar notificación:

http://developer.android.com/training/notify-user/build-notification.html

http://www.tutorialspoint.com/android/android_notifications.htm

http://www.vogella.com/tutorials/AndroidNotifications/article.html

Mientras todo este largo procesamiento se lleva a cabo en segundo plano, tendré que mostrar algún tipo de indicador (un ProgressDialog). Esta es la razón por la que opté por usar un servicio enlazado`

¿Cómo puedo actualizar la interfaz de usuario desde un servicio independiente?`

Usa un LocalBroadCastManager , o en general BroadCastReciever

IU de actividad de actualización de Android desde el servicio

En J2ME he hecho algo similar, y cuando pongo algo como los 6 pasos que mencioné arriba, todos se ejecutan secuencialmente, es decir, uno tras otro. ¿Es lo mismo en Android?

esto depende de tus pasos, si sigues mi idea, ejecutas concurrently y si ejecuta su idea, ejecutará sequentially .

Buena suerte.