Welches ist der richtige Delegat, der implementiert werden soll, wenn eine Anwendung aus dem Hintergrund erwacht und Sie möchten, dass sie aktiv ist?
applicationWillEnterForeground vs applicationDidBecomeActive - Was ist der Unterschied?
Welches ist der richtige Delegat, der implementiert werden soll, wenn eine Anwendung in den Ruhezustand versetzt wird und Sie sie für die Bereinigung und Speicherung von Daten vorbereiten möchten?
applicationWillResignActive vs. applicationDidEnterBackground - Was ist der Unterschied?
Außerdem habe ich festgestellt, dass applicationWillResignActive aufgerufen wird, wenn eine eingehende SMS oder ein eingehender Anruf eingeht, der Benutzer jedoch auf OK klickt und fortfährt. Ich möchte nicht, dass meine App in diesen Fällen Maßnahmen ergreift. Ich möchte nur, dass es ohne Zwischenbereinigung weiterläuft, da der Benutzer die App nicht beendet hat. Daher würde ich denken, dass es sinnvoller ist, Bereinigungsarbeiten nur in applicationDidEnterBackground durchzuführen.
Ich würde mich über Ihre Beiträge zu Best Practices freuen, die Sie bei der Auswahl der Delegierten für das Aufwachen und Einschlafen sowie bei der Berücksichtigung von Ereignissen wie der Unterbrechung durch SMS / Anrufe befolgen sollten.
Vielen Dank
-applicationWillEnterForeground:
wird dies nicht nur aufgerufen-applicationDidEnterBackground:
(vorausgesetzt, iOS glaubt nicht, dass es sich um einen Relaunch handelt).applicationWillEnterForeground:
jedes Mal von Hintergrund zu Vordergrund aufgerufen?! Ich kann keinen Fall finden, derapplicationDidBecomeActive
danach NICHT OHNE aufgerufen wird .Das Verwalten des Lebenszyklus Ihrer App ist hilfreich für Ihre Fragen. Für ein schnelles Konzept können Sie die Abbildungen in diesem Dokument sehen. Sie können den Kommentar auch aus dem vom XCode-Assistenten generierten Code lesen. Aufgeführt wie folgt:
Ausführlichere Erläuterungen finden Sie im offiziellen Dokument zu UIApplicationDelegate
quelle
Ich war immer noch ein bisschen verwirrt mit Danos Antwort, also habe ich einen kleinen Test durchgeführt, um den Ereignisfluss in bestimmten Szenarien als Referenz zu erhalten, aber es könnte auch für Sie nützlich sein. Dies gilt für Apps, die NICHT
UIApplicationExitsOnSuspend
in ihrer info.plist verwendet werden. Dies wurde auf einem iOS 8-Simulator durchgeführt, der mit einem iOS 7-Gerät bestätigt wurde. Bitte entschuldigen Sie die Namen der Event-Handler von Xamarin. Sie sind sehr ähnlich.Ja,
DidEnterBackground
wird auf iOS7-Geräten zweimal aufgerufen. Beide Male ist der UIApplication-Status Hintergrund. Der iOS 8-Simulator tut dies jedoch nicht. Dies muss auf einem iOS 8-Gerät getestet werden. Ich werde meine Antwort aktualisieren, wenn ich sie in die Hand nehme oder jemand anderes sie bestätigen könnte.quelle
applicationWillEnterForeground
wird genannt:Wenn die App neu gestartet wird (kommt vom Hintergrund in den Vordergrund) Diese Methode wird nicht aufgerufen, wenn die App zum ersten Mal gestartet wird, dh wenn sie
applicationDidFinishLaunch
aufgerufen wird, sondern nur, wenn sie aus dem Hintergrund kommtapplicationDidBecomeActive
applicationDidBecomeActive
wird genanntwenn App wird zunächst nach dem Start
didFinishLaunching
nach ,applicationWillEnterForeground
wenn es keine URL zu behandeln. nachapplication:handleOpenURL:
wird aufgerufen. danach,applicationWillResignActive
wenn der Benutzer eine Unterbrechung wie einen Anruf oder eine SMS ignoriert. nach dem Verschwinden von alertView irgendwo aus der Anwendungquelle
applicationWillResignActive wird aufgerufen, wenn das System nach Berechtigungen fragt. (in iOS 10). Nur für den Fall, dass jemand in die gleichen Schwierigkeiten gerät wie ich ...
quelle
In iOS 8+ gibt es einen subtilen, aber wichtigen Unterschied beim Annehmen von Anrufen.
Wenn der Benutzer in iOS 7 einen Anruf entgegennimmt, werden sowohl applicationWillResignActive: als auch applicationDidEnterBackground: aufgerufen. In iOS 8+ wird jedoch nur applicationWillResignActive: aufgerufen.
quelle
Für iOS 13+ werden die folgenden Methoden ausgeführt:
quelle