Реших да дойда при вас, защото вие сте експерти
първо i am not expert
и също i am not knowledgeable
можете да намерите повече експерти от мен, но това е моето мнение hope to give you some help
.
първо забравете да използвате AsyncTask
за изтегляне, защото трябва да се използва за кратки фонови задачи, които не са като вашите, мисля, че количеството файл, който искате да изтеглите, е доста голямо. (мисля така)
проверете downloadmanager
от Google, за да видите как работи, може да ви помогне.
http://developer.android.com/reference/android/app/DownloadManager.html
http://blog.vogella.com/2011/06/14/android-downloadmanager-example/
ако искате да използвате service
използвайте unbound service
защото не искате услугата да бъде унищожена от android или потребител, когато потребителят затвори приложенията, нали? мисля, че искате да получите данните си по някакъв начин.
за да бъда ефективен, препоръчвам тези стъпки:
а. Прочетете спокойна услуга, за да извлечете данните на клиентите
б. когато получите клиентски данни, направете:
-
създайте друга услуга или нишка, за да прочетете спокойна услуга, за да извлечете данните за статии
-
Анализирайте отговора на Json обекти във вашата стара услуга или нишка
сега имате 2 услуги или нишки, които се изпълняват едновременно, така че следвайте стъпките, които очевидно insert
parse
и така за всяка услуга или нишка.
защо не комбинирам a и d? защото мисля, че потребителите не обичат да чакат много време зад лентата за напредък на изтеглянето.
за да вмъкнете вашите данни в базата данни, използвайте transaction
и ви препоръчвам да използвате:
http://greendao-orm.com/
това е по-ефективно ORM
отколкото други за база данни и се освобождавате от внедряването на db.
Ако дейността, която стартира услугата, е изрично анулирана или е скрита от друга дейност, услугата трябва да има начин да уведоми потребителя, че процесът е приключил. Как мога да приложа това?
използвайте известие:
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
Докато цялата тази дълга обработка се извършва на заден план, ще трябва да покажа някакъв индикатор (ProgressDialog) Това е причината да избера да използвам обвързана услуга
как мога да актуализирам потребителския интерфейс от необвързана услуга?`
Използвайте LocalBroadCastManager
, или най-общо BroadCastReciever
Потребителски интерфейс за активност за актуализиране на Android от услуга
В J2ME съм правил нещо подобно и когато поставя нещо като 6-те стъпки, които споменах по-горе, всички те се изпълняват последователно, тоест една след друга. Същото ли е в Android?
това зависи от вашите стъпки, ако следвате идеята ми, изпълнявате concurrently
и ако изпълните идеята си, ще стартирате sequentially
.
Успех.