ViewController über App "Schließung" benachrichtigen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • ViewController über App "Schließung" benachrichtigen

    Hallo Entwickler,

    gibt es eine Möglichkeit einen bestimmten ViewController über die "Schließung" der App zu benachrichtigen?
    Damit meine ich nicht einfach das Betätigen des Home-Button, sondern das konkrete Beenden per App Switcher oder beim ausschalten des Gerätes.

    Es geht darum, dass eine Sammlung von Daten entsteht, die dann gespeichert werden soll.
  • Die Methode habe ich implementiert und beim Testen auf einem realen Gerät habe ich einfach nur den App Switcher aufgemacht und habe die App "gekillt".
    Benutzer würden es genau so machen und dabei sollte die Methode auch aufgerufen werden.
  • Ja, der Debugger zeigt das:

    Quellcode

    1. libsystem_kernel.dylib`mach_msg_trap:
    2. 0x3bd5fe1c: mov r12, sp
    3. 0x3bd5fe20: push {r4, r5, r6, r8}
    4. 0x3bd5fe24: ldm r12, {r4, r5, r6}
    5. 0x3bd5fe28: mvn r12, #30
    6. 0x3bd5fe2c: svc #128
    7. 0x3bd5fe30: pop {r4, r5, r6, r8}
    8. 0x3bd5fe34: bx lr


    Und bei der vorletzten Zeile SIGKILL.
  • Das ist normal, da du dem debugger mit dem Beenden der App diese unter dem Arsch wegziehst.

    Ich verstehe nicht wiso Du Deine DAtenspeicherung nicht im

    - (void)applicationDidEnterBackground:(UIApplication *)application
    {
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
    }

    Da steht sogar extra drin das die dafür benutzt werden soll
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Das Problem dabei ist aber, dass diese Methode mehrmals ausgeführt werden kann.
    Ich brauche eine Methode, die nur 1x ausgeführt wird, sonst kehrt der Nutzer zurück und die Daten werden beim nächsten beenden wieder gespeichert.
    Es darf aber nur 1x gespeichert werden, also Zwischenspeichern ist nicht möglich. Es muss alles auf einmal sein.

    Normalerweise wird das am Ende der Prozedur ausgeführt, aber der Nutzer könnte zwischendurch die App schließen und zurückkehren.
    Da soll nichts passieren. Wenn aber mittendrin die App ganz beendet wird, dann soll gleich gespeichert werden.
  • Son ein Quatsch habe ich ja noch nie gehört…

    Warum darf denn nur 1x gespeichert werden? Ich kann doc h so oft speichern wie ich lustig bin. Man sollte sogar so oft wie möglich speichern um einen Datenverlust bei einem Absturz zu vermeiden. Also sorry aber dein Konzept ist für die Tonne
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Es geht darum, dass ich einen Satz Objekte habe, die sich jeweils in Gruppen befinden.
    Also hat jede Gruppe mehrere Objekte. Jedes Objekt hat eine Property NSNumber, so dass es immer weiß, wo in der Gruppe es sich befindet.

    Das wird zum Beispiel genutzt, wenn ein Objekt bearbeitet wird. Es kann dann direkt wieder an die richtige Stelle eingesetzt werden.

    Jetzt gibt es eine Situation, bei der hintereinander mehrere Objekte bearbeitet werden. Diese werden dem zuständigen ViewController als Array übergeben.
    Wenn jetzt das erste Objekt bearbeitet und danach gespeichert wird geht alles gut. Alle Objekte (einschließlich dem bearbeiteten) werden neu sortiert und bekommen ihre neue Position zugewiesen.
    Wenn sich aber in dem Array der Objekte, die noch zu bearbeiten sind ein Objekt befindet, dass von der Sortierung betroffen ist, weiß es nichts von der Veränderung wird wird dann an die falsche Position gespeichert.

    Deshalb hatte ich die Idee die bearbeiteten Objekte zu sammeln um sie dann gemeinsam zu speichern und erst danach zu sortieren.