Ich entwickle eine App, die eine große Menge an Daten beim ersten Start (etwa 1 GB Bilder) herunterladen muss. Derzeit verwende ich die Bibliothek MZDownloadManager, um die Downloads durchzuführen. Die Bibliothek implementiert die Hintergrundmodi für die Downloads und ich habe sie sogar in die Fähigkeiten meines Ziels eingefügt. Im Prinzip habe ich dieses Szenario:Wie Code-Hintergrund-Downloads durchführen?
- ich eine API aufrufen, die mir eine json gibt
- ich alle Daten in Core Data speichern
- ich alle URLs der Bilder speichern in einem Array heruntergeladen werden
- ich sparen Core Data
- beginne ich die Downloads
- ich herunterladen 1 Artikel zu einer Zeit
- Wenn eine es em ist abgeschlossen, ich den lokalen Pfad in Core Data speichern und entfernen Sie sie aus dem Array von Urls
- ich den neuen Download zu starten
- Wenn alles abgeschlossen ist, zeige ich die UI den Fortschrittsbalken versteckt
Ich möchte dem Benutzer die Möglichkeit geben, die App im Hintergrund zu platzieren, während die Downloads durchgeführt werden. Es funktioniert ziemlich gut auf Simulator, aber nicht auf dem Gerät. Ich denke auf dem Simulator funktioniert wegen der großen Menge an Speicher des Mac. Hast du Vorschläge?
Sie können das Profil der App und sehen, ob es zu viel CPU oder Speicher ist mit. Ich weiß, dass es eine Grenze gibt für wie viel Arbeit Sie bei jedem Hintergrundanruf tun können, und vielleicht ist das das Problem. Fyi gibt es einen anderen Download-Manager hier, wenn dieser einen Fehler hat. https://github.com/Gurpartap/Cheapjack – GregP