Video: A Trip to Unicorn Island 2025
Om användaren svarar på avbrottet (SMS meddelande till exempel) eller har startat en annan applikation, flyttas din ansökan till bakgrunden.
När användaren accepterar meddelandet eller avbrottet, eller trycker på knappen Hem (eller när systemet startar en annan applikation), flyttas din ansökan till bakgrundsläget, där den är avstängd. (Om en app måste fortsätta springa kan den begära körningstid från systemet.)
Här är de meddelanden som din ansökan kan svara på när den har flyttats in i bakgrunden:
-
The applicationDidEnterBackground: meddelande: När din app först kommer in i bakgrunden state, det är skickat applicationDidEnterBackground: meddelande. I den här metoden borde du spara någon osparad data eller stat (där användaren är i appen - den aktuella vyn, de valda alternativen och saker som det) till en tillfällig cache-fil eller till inställningsdatabasen " på disken. ”
Vet att Apple kallar iOS-lagringssystemet en disk trots att det är en solid-state-enhet, så om Apple kallar det så borde du troligen också Förvirra inte för många människor.
Även om din ansökan går in i bakgrundsstaten, har du ingen garanti för att den kommer att stanna kvar på obestämd tid. Om minnet blir begränsat kommer IOS att rensa bakgrundsappar för att göra mer plats för förgrundsappen.
Du måste göra allt som behövs för att kunna återställa din ansökan om det sedan rensas ur minnet så att nästa gång användaren startar din app kan din ansökan använda den informationen för att återställa din app till dess tidigare tillstånd. Du måste också göra ytterligare rengöringsoperationer, till exempel att ta bort tillfälliga filer.
Om din ansökan rensas när den befinner sig i det här suspenderade läget, , får det inte märkas att det har tagits bort från minnet. Du måste spara data på förhand!
När din delegat har skickats till applicationDidEnterBackground: -metoden har din app en odaterad tid att slutföra sakerna. Om metoden inte återvänder innan tiden löper ut (eller om din app inte begär mer exekveringstid från iOS), avslutas din app och rensas från minnet.
Om din ansökan begär mer exekveringstid eller det har förklarat att det gör bakgrundsförlängning, får det fortsätta att köras efter att metodDidEnterBackground: returnerar metod. Om inte, flyttas din (nu) bakgrundsapplikation till tillståndet suspenderat strax efter att ha återvänt från applicationDidEnterBackground: -metoden.
Om programmet är i bakgrunden kan det sedan startas om. Detta kan hända om användaren väljer appen från startskärmen eller multitaskingsfältet, eller det startas av systemet om appen behandlar händelser i bakgrunden eller övervakar en betydande platsändring, till exempel.
-
Programmet applicationWillEnterForeground: : När din applikation omstartas från bakgrunden skickas programmet ApplicationWillEnterForeground: meddelande. I den här metoden måste du ångra vad du gjorde i programmetDidEnterBackground: metod (inte applicationWillResignActive; du ångrar det nästa).
Om användaren ignorerar SMS-meddelandet, eller om appen startas om från bakgrunden, aktiveras din applikation och börjar bli beröring och andra händelser.
När din ansökan återaktiveras skickas den till applicationDidBecomeActive: Meddelandet.
Du kan använda metoden applicationDidBecomeActive: för att återställa programmet till det tillstånd den var innan avbrottet. Här ångrar du vad du gjorde i applicationWillResignActive-metoden, till exempel starta om några aktiviteter som var pausade (eller ännu inte startat) medan programmet var inaktivt. Om programmet tidigare var i bakgrunden kanske du behöver uppdatera användargränssnittet.
Medan en applikation befinner sig i suspenderat tillstånd spårar och samlar systemet (egentligen nät ut ) händelser som kan påverka den applikationen när den startas om. Så snart din ansökan är igång igen, levererar systemet dessa händelser till den.
För de flesta av dessa händelser bör din applikations befintliga infrastruktur bara svara på lämpligt sätt. Om till exempel om orienteringen av enheten ändras, uppdaterar programmets visningsstyrare automatiskt gränssnittets orientering på ett lämpligt sätt.
Apps flyttas vanligtvis till bakgrunden när de avbryts eller när användaren avslutar. Men om appen kompilerades med en tidigare version av SDK, eller körs på en tidigare version av operativsystemet som inte stöder multitasking - eller om du bestämmer dig för att du inte vill att din app ska springa i bakgrunden och du ställer in UIApplicationExitsOnSuspend-knappen i dess Info. plistfil - iOS avslutar din app.
Även om din ansökan stöder multitasking (nästan alla gör nu) måste du fortfarande vara beredd att din ansökan ska dödas utan någon anmälan. Användaren kan döda program uttryckligen med hjälp av multitaskingsfältet.
Om minnet blir begränsat kan dessutom systemet ta bort program från minnet för att göra mer utrymme. Om det tar bort ditt suspenderade -program, ger det dig ingen varning, mycket mindre varsel! Om din applikation för närvarande körs i bakgrundsstatus, ringer systemet dock programmetWillTerminate: -metoden för programdelegationen.
När din ansökan delegat skickas programmetWillTerminate: meddelande i icke-multitaskingsapplikationer, eller de som körs i bakgrunden, måste du göra samma sorts saker som du gör i applicationDidEnterBackground: förutom den här tiden gör du dem och vet att din ansökan har vunnit kommer inte att återvända från bakgrunden.
Din ansökanWillTerminate: Metodsimplementering har en begränsad (om än obegränsad) tid att göra vad den behöver göra och återvända. Mer än det och din ansökan avslutas och rensas från minnet. (Terminator knyter inte runt.)
