Ho deciso di venire da voi perché siete gli esperti
prima i am not expert
e anche i am not knowledgeable
puoi trovare persone più esperte di me ma questa è la mia opinione hope to give you some help
.
prima di tutto dimentica di usare AsyncTask
da scaricare perché deve essere utilizzato per brevi lavori in background non come il tuo penso che la quantità di file che desideri scaricare sia piuttosto grande. (credo di sì)
controlla downloadmanager
di google per vedere come funziona potrebbe aiutarti.
http://developer.android.com/reference/android/app/DownloadManager.html
http://blog.vogella.com/2011/06/14/android-downloadmanager-example/
se vuoi usare il service
usa unbound service
perché non vuoi che il servizio venga distrutto da Android o dall'utente quando l'utente chiude le app, vero? penso che tu voglia ottenere i tuoi dati in qualsiasi modo.
per essere efficiente ti consiglio questi passaggi:
un. Leggi un servizio riposante per recuperare i dati dei clienti
b. quando ricevi i dati dei clienti, fai :
-
crea un altro servizio o thread per leggere un servizio riposante per recuperare i dati degli articoli
-
Analizza la risposta a Json Objects sul tuo vecchio servizio o thread
ora hai 2 servizi o thread che vengono eseguiti contemporaneamente, quindi segui i passaggi che ovviamente insert
parse
e così, su ogni servizio o thread.
perché non combino a e d? perché penso che all'utente non piaccia aspettare molto tempo dietro la barra di avanzamento del download.
per inserire i tuoi dati nel database usa transaction
e ti consiglio di usare:
http://greendao-orm.com/
è più efficiente ORM
rispetto ad altri per il database e ti liberi dall'implementazione del db.
Se l'attività che ha avviato il servizio viene esplicitamente annullata o viene nascosta da un'altra attività, il servizio deve disporre di un modo per far sapere all'utente che il processo è terminato. Come potrei implementarlo?
utilizzare la notifica:
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
Mentre tutta questa lunga elaborazione avviene in background, dovrò mostrare una sorta di indicatore (un ProgressDialog) Questo è il motivo per cui ho optato per l'utilizzo di un Bound Service`
come posso aggiornare l'interfaccia utente da un servizio illimitato?`
Usa un LocalBroadCastManager
, o in generale BroadCastReciever
Interfaccia utente dell'attività di aggiornamento Android dal servizio
In J2ME ho fatto qualcosa di simile, e quando inserisco qualcosa come i 6 passaggi che ho menzionato sopra, tutti vengono eseguiti in sequenza, cioè uno dopo l'altro. È lo stesso su Android?
questo dipende dai tuoi passaggi, se segui la mia idea esegui concurrently
e se esegui la tua idea, eseguirai sequentially
.
Buona fortuna.