Ich habe mich entschieden, zu Ihnen zu kommen, weil Sie die Experten sind
zuerst i am not expert
und auch i am not knowledgeable
Sie können mehr Experten finden als mich, aber das ist meine Meinung hope to give you some help
.
Vergessen Sie zunächst, AsyncTask
zu verwenden herunterzuladen, weil es für kurze Hintergrundjobs verwendet werden muss, die nicht wie deine sind. Ich denke, die Menge an Dateien, die Sie herunterladen möchten, ist ziemlich groß. (Ich denke schon)
überprüfen Sie downloadmanager
von Google, um zu sehen, wie es funktioniert, es kann Ihnen helfen.
http://developer.android.com/reference/android/app/DownloadManager.html
http://blog.vogella.com/2011/06/14/android-downloadmanager-example/
wenn Sie service
verwenden möchten Verwenden Sie unbound service
weil Sie nicht möchten, dass der Dienst von Android oder dem Benutzer zerstört wird, wenn der Benutzer die Apps schließt, oder? Ich denke, Sie wollen Ihre Daten irgendwie bekommen.
Um effizient zu sein, empfehle ich diese Schritte:
a. Lesen Sie einen erholsamen Dienst, um die Kundendaten abzurufen
b. Wenn Sie Kundendaten erhalten, tun Sie Folgendes:
-
Erstellen Sie einen weiteren Dienst oder Thread, um einen Restful-Dienst zu lesen, um die Artikeldaten abzurufen
-
Analysieren Sie die Antwort auf Json-Objekte in Ihrem alten Dienst oder Thread
Jetzt haben Sie 2 Dienste oder Threads, die gleichzeitig ausgeführt werden, also folgen Sie den Schritten, die offensichtlich insert
sind parse
und so für jeden Dienst oder Thread.
warum kombiniere ich nicht a und d? weil ich denke, dass Benutzer nicht gerne lange hinter dem Download-Fortschrittsbalken warten.
Um Ihre Daten in die Datenbank einzufügen, verwenden Sie transaction
und ich empfehle Ihnen die Verwendung von:
http://greendao-orm.com/
es ist effizienter ORM
als andere für die Datenbank und Sie erhalten keine db-Implementierung.
Wenn die Aktivität, die den Dienst gestartet hat, explizit abgebrochen oder durch eine andere Aktivität ausgeblendet wird, muss der Dienst eine Möglichkeit haben, den Benutzer darüber zu informieren, dass der Prozess beendet ist. Wie könnte ich das umsetzen?
Benachrichtigung verwenden:
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
Während diese ganze lange Verarbeitung im Hintergrund stattfindet, muss ich eine Art Indikator (einen ProgressDialog) zeigen. Das ist der Grund, warum ich mich für die Verwendung eines gebundenen Dienstes entschieden habe`
Wie kann ich die Benutzeroberfläche eines ungebundenen Dienstes aktualisieren?`
Verwenden Sie einen LocalBroadCastManager
, oder allgemein BroadCastReciever
Benutzeroberfläche für Android-Aktualisierungsaktivitäten vom Dienst
In J2ME habe ich etwas Ähnliches gemacht, und wenn ich so etwas wie die oben erwähnten 6 Schritte einfüge, werden alle nacheinander ausgeführt, dh einer nach dem anderen. Ist es das gleiche in Android?
Dies hängt von Ihren Schritten ab. Wenn Sie meiner Idee folgen, führen Sie concurrently
aus und wenn Sie Ihre Idee ausführen, werden Sie sequentially
ausführen .
Viel Glück.