Jag bestämde mig för att komma till dig eftersom du är experterna
först i am not expert
och även i am not knowledgeable
du kan hitta fler experter än jag men det här är min åsikt hope to give you some help
.
Glöm först och främst att använda AsyncTask
att ladda ner eftersom det måste användas för korta bakgrundsjobb som inte liknar ditt. Jag tror att mängden fil du vill ladda ner är ganska stor.(jag tror det)
kontrollera downloadmanager
av google för att se hur det fungerar kan det hjälpa dig.
http://developer.android.com/reference/android/app/DownloadManager.html
http://blog.vogella.com/2011/06/14/android-downloadmanager-example/
om du vill använda service
använd unbound service
eftersom du inte vill att tjänsten ska förstöras av Android eller användare när användaren stänger apparna eller hur? Jag tror att du vill få din data på något sätt.
för att vara effektiv rekommenderar jag dessa steg:
a. Läs en vilsam tjänst för att hämta kunddata
b. när du får kunddata gör :
-
skapa en annan tjänst eller tråd för att läsa en vilsam tjänst för att hämta artikeldata
-
Analysera svaret på Json Objects på din gamla tjänst eller tråd
nu har du 2 tjänster eller trådar som körs samtidigt så följ stegen som är uppenbara insert
parse
och så, på varje tjänst eller tråd.
varför kombinerar jag inte a och d? eftersom jag tror att användaren inte gillar att vänta länge bakom nedladdningsförloppsindikatorn.
för att infoga dina data i databasen använd transaction
och jag rekommenderar att du använder:
http://greendao-orm.com/
det är mer effektivt ORM
än andra för databas och du blir fri från db-implementering.
Om aktiviteten som startade tjänsten uttryckligen avbryts eller döljs av en annan aktivitet, måste tjänsten ha ett sätt att låta användaren veta att processen har avslutats. Hur kunde jag implementera det?
använd avisering:
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
Medan all denna långa bearbetning äger rum i bakgrunden måste jag visa någon sorts indikator (en ProgressDialog) Detta är anledningen till att jag valde att använda en bunden tjänst`
hur kan jag uppdatera användargränssnittet från en obunden tjänst?`
Använd en LocalBroadCastManager
, eller i allmänhet BroadCastReciever
Android uppdaterar aktivitetsgränssnittet från tjänsten
I J2ME har jag gjort något liknande, och när jag lägger något i stil med de 6 stegen jag nämnde ovan exekveras alla sekventiellt, det vill säga en efter en. Är det samma i Android?
detta beror på dina steg, om du följer min idé kör du concurrently
och om du kör din idé kommer du att köra sequentially
.
Lycka till.