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.
https://developer.android.com/reference/android/app/DownloadManager.html
https://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ć:
https://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:
https://developer.android.com/training/notify-user/build-notification.html
https://www.tutorialspoint.com/android/android_notifications.htm
https://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.