2017-03-24 4 views
1

Ich habe App-Statuserhaltung und -wiederherstellung in meiner App arbeiten. Die Wiederherstellung ist ziemlich rechenintensiv und auf den ältesten unterstützten Geräten kann das Wiederherstellen des App-Status bis zu 5 Sekunden dauern. Daher möchte ich einen Aktivitätsindikator anzeigen, während der App-Status wiederhergestellt wird.Anzeige für unbestimmte Aktivität anzeigen, während App-Status wiederhergestellt wird?

Im View-Controller restauriert ich versucht habe:

override public func decodeRestorableStateWithCoder(coder: NSCoder) { 
    showActivityIndicator() 
    //just creates and adds UIActivityIndicatorView to view controller's view 
    ... 
} 

override public func applicationFinishedRestoringState() { 
    hideActivityIndicator() 
} 

Ich habe auch versucht es auf die UIWindow im App Delegierter Zugabe:

func application(application: UIApplication, shouldRestoreApplicationState coder: NSCoder) -> Bool 
    showActivityIndicator() 
} 

Aber in beiden Fällen keine Aktivitätsanzeige angezeigt . Ich vermute, dass die App ihren Ansichtszustand nicht aktualisiert, während sie wiederhergestellt wird.

Hat es jemand geschafft, einen Aktivitätsindikator beim Wiederherstellen des App-Status zu zeigen, wenn ja wie?

Antwort

0

Wenn Ihr Wiederherstellungsvorgang im Hauptthread ausgeführt wird, kann es einen Grund geben, warum der Aktivitätsindikator nicht angezeigt wird.

Versuchen Sie den Wiederherstellungsprozess im Hintergrundthread auszuführen.

0

Während der Statuswiederherstellung sehen Sie nicht die Ansichten Ihrer App, sondern ein Snapshot-Image der Benutzeroberfläche, das erstellt wurde, als der Status beibehalten wurde. Änderungen, die Sie während der Wiederherstellung an einer Ansicht vornehmen, einschließlich einer Aktivitätsanzeige, werden nicht angezeigt.

Als Teil des Statuserhaltungsprozesses erfasst UIKit die Benutzeroberfläche Ihrer App und speichert sie in einer Bilddatei. Wenn Ihre App neu gestartet wird, zeigt das System dieses Snapshot-Image anstelle des Standard-Startabbilds Ihrer App an, um zu gewährleisten, dass Ihre App weiterhin ausgeführt wird.

(Von: Documentation for ignoreSnapshotOnNextApplicationLaunch())

Stattdessen könnte man die App fangen gehen in den Hintergrund mit dem UIApplicationWillResignActive Benachrichtigung und Änderungen an der Ansicht dann so, dass sie in dem Snapshot aufbewahrt werden, die später auf die Wiederherstellung angezeigt . Dies kann nützlich sein, um z. B. Schaltflächen zu deaktivieren, sodass Benutzer sehen, dass sie während der Wiederherstellung nicht mit der App interagieren können. Aktivieren Sie diese Schaltflächen dann wieder, wenn die App wieder vollständig aktiv ist. Wenn Sie jedoch hier einen Aktivitätsindikator hinzufügen, wird dieser nicht animiert. Alternativ können Sie den oben verlinkten ignoreSnapshotOnNextApplicationLaunch() verwenden, um Ihren Startbildschirm während der Statuswiederherstellung anzuzeigen, um Ihren Benutzern zu verdeutlichen, dass sie nicht interagieren können. Dieser wird dann nach Abschluss der Wiederherstellung in Ihre wiederhergestellten Ansichten eingeblendet.

Verwandte Themen