Postanowiłem przyjść do was, ponieważ jesteście ekspertami
najpierw i am not expert
a także i am not knowledgeable
możesz znaleźć więcej ekspertów niż ja, ale to to moja opinia hope to give you some help
.
przede wszystkim zapomnij użyć AsyncTask
do pobrania, ponieważ musi być używany do krótkich zadań w tle, które nie są takie jak twoje. Myślę, że ilość pliku, który chcesz pobrać, jest dość duża. (tak sądzę)
sprawdź downloadmanager
Google, aby zobaczyć, jak to działa, może ci pomóc.
http://developer.android.com/reference/android/app/DownloadManager.html
http://blog.vogella.com/2011/06/14/android-downloadmanager-example/
jeśli chcesz korzystać z service
użyj unbound service
ponieważ nie chcesz, aby usługa została zniszczona przez Androida lub użytkownika, gdy użytkownik zamknie aplikacje, prawda? myślę, że chcesz uzyskać swoje dane w jakikolwiek sposób.
aby być wydajnym, polecam następujące kroki:
a. Przeczytaj o spokojnym serwisie, aby pobrać dane klientów
b. po otrzymaniu danych Klienta wykonaj :
-
utwórz inną usługę lub wątek, aby przeczytać niezakłóconą usługę, aby pobrać dane artykułów
-
Przeanalizuj odpowiedź do Json Objects w swojej starej usłudze lub wątku
teraz masz 2 usługi lub wątki, które działają jednocześnie, więc postępuj zgodnie z krokami, które są oczywiste insert
parse
i tak w każdej usłudze lub wątku.
dlaczego nie łączę a i d? ponieważ myślę, że użytkownik nie lubi czekać zbyt długo za paskiem postępu pobierania.
aby wstawić swoje dane do bazy danych użyj transaction
i polecam użyć:
http://greendao-orm.com/
jest bardziej wydajny ORM
niż inne dla bazy danych i otrzymujesz darmową implementację db.
Jeśli działanie, które uruchomiło usługę, zostało jawnie anulowane lub ukryte przez inne działanie, usługa musi mieć możliwość poinformowania użytkownika o zakończeniu procesu. Jak mogę to zaimplementować?
użyj powiadomienia:
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
Podczas gdy całe to długie przetwarzanie odbywa się w tle, będę musiał pokazać jakiś wskaźnik (ProgressDialog) To jest powód, dla którego zdecydowałem się na użycie usługi powiązanej`
jak mogę zaktualizować interfejs użytkownika z usługi niezwiązanej?`
Użyj LocalBroadCastManager
lub ogólnie BroadCastReciever
Interfejs użytkownika aktualizacji Androida z usługi
W J2ME zrobiłem coś podobnego i kiedy wstawiam 6 kroków, o których wspomniałem powyżej, wszystkie są wykonywane po kolei, czyli jeden po drugim. Czy tak samo jest w Androidzie?
to zależy od twoich kroków, jeśli podążasz za moim pomysłem, uruchamiasz concurrently
a jeśli uruchomisz swój pomysł, uruchomisz sequentially
.
Powodzenia.