Video: Hva er GDPR? - Hvordan påvirker GDPR din bedrift 2024
Hvis brukeren svarer på avbrudd (SMS melding for eksempel) eller har lansert et annet program, blir søknaden din flyttet til bakgrunnen.
Livssyklusen for iOS-applikasjonen.Når brukeren aksepterer varslingen eller avbrudd, eller trykker på Hjem-knappen (eller når systemet starter et annet program), flyttes søknaden din til bakgrunnsstaten, der den er suspendert. (Hvis en app må fortsette å kjøre, kan den be om utførelsestid fra systemet.)
Her er meldingene du kan svare på når programmet er flyttet inn i bakgrunnen:
-
The applicationDidEnterBackground: melding: Når appen din kommer inn i bakgrunnen state, det er sendt applicationDidEnterBackground: melding. I denne metoden bør du lagre alle data som ikke er lagret, eller state (der brukeren er i appen - den nåværende visningen, valgene som er valgt og ting som det) til en midlertidig hurtigbufferfil eller til preferansedatabasen " på disken. “
Vet at Apple kaller iOS-lagringssystemet en disk selv om det er en solid state-stasjon, så hvis Apple kaller det, bør du sannsynligvis også, slik at du ikke forvirre for mange mennesker.
Selv om søknaden din kommer inn i bakgrunnsstaten, har du ingen garanti for at den forblir der ubestemt. Hvis minnet blir begrenset, vil iOS rense bakgrunnsprogrammer for å gjøre mer plass til forgrunnsappen.
Du må gjøre alt som er nødvendig for å kunne gjenopprette søknaden din, hvis den senere blir renset fra minnet, slik at neste gang brukeren starter appen din, kan programmet bruke denne informasjonen til å gjenopprette appen din til sin tidligere tilstand. Du må også gjøre ekstra opprydding, for eksempel å slette midlertidige filer.
Hvis søknaden din blir renset når den er i denne suspenderte tilstanden, , blir det ikke merket at den er fjernet fra minnet. Du må lagre data på forhånd!
Når din delegat er sendt applicationDidEnterBackground: -metoden, har appen din en ubestemt tid til å fullføre ting. Hvis metoden ikke returnerer før tiden går tom (eller hvis appen din ikke ber om mer eksekveringstid fra iOS), blir appen din avsluttet og renset fra minnet.
Hvis søknaden din ber om mer utførelsestid, eller den har erklært at den gjør bakgrunnsutførelse, kan det fortsette å kjøre etter at metoden returnerer applicationDidEnterBackground: method. Hvis ikke, blir din (nå) bakgrunnsapplikasjon flyttet til suspendert -staten kort tid etter at du har returnert fra applicationDidEnterBackground: -metoden.
Hvis programmet er i bakgrunnen, kan det da bli gjenoppstart. Dette kan skje hvis brukeren velger appen fra startskjermbildet eller multitaskingslinjen, eller det blir lansert av systemet hvis appen behandler hendelser i bakgrunnen eller overvåker en betydelig lokaliseringsendring, for eksempel.
-
applicationWillEnterForeground: melding: Når applikasjonen din startes på nytt fra bakgrunnen, sendes programmet ApplicationWillEnterForeground: melding. I denne metoden må du angre det du gjorde i applicationDidEnterBackground: metoden (ikke applicationWillResignActive; du angre det neste).
Hvis brukeren ignorerer SMS-meldingen, eller appen starter på nytt fra bakgrunnen, blir programmet aktivert og begynner å få berøring og andre hendelser.
Når programmet blir aktivert, blir det sendt programmetDidBecomeActive: melding.
Du kan bruke applicationDidBecomeActive: metoden for å gjenopprette programmet til staten den var i før avbrudd. Her fortryder du det du gjorde i applicationWillResignActive-metoden, for eksempel omstart eventuelle oppgaver som ble satt på pause (eller ikke startet ennå) mens programmet var inaktivt. Hvis programmet tidligere var i bakgrunnen, må du kanskje oppdatere brukergrensesnittet.
Mens et program er i suspendert tilstand, sporer og samler systemet (virkelig nett ut ) hendelser som kan ha innvirkning på det programmet når det gjenoppstår. Så snart søknaden din er i gang igjen, leverer systemet disse hendelsene.
For de fleste av disse hendelsene, bør søknadens eksisterende infrastruktur bare svare på riktig måte. Hvis for eksempel enhetsretningen endres, vil programmets visningsstyrere automatisk oppdatere grensesnittretningen på en passende måte.
Apper flyttes vanligvis til bakgrunnen når de avbrytes eller når brukeren slutter. Men hvis appen ble kompilert med en tidligere versjon av SDK, eller kjører på en tidligere versjon av operativsystemet som ikke støtter multitasking - eller hvis du bestemmer deg for at du ikke vil at appen skal kjøre i bakgrunnen og du setter UIApplicationExitsOnSuspend-tasten i sin Info. plist-fil - iOS avslutter appen din.
Selv om søknaden din støtter multitasking (nesten alle gjør på dette punktet), må du likevel være forberedt på at søknaden din blir drept uten varsel. Brukeren kan drepe applikasjoner eksplisitt ved hjelp av multitasking-linjen.
I tillegg, hvis minnet blir begrenset, kan systemet fjerne programmer fra minnet for å gjøre mer plass. Hvis det fjerner programmet suspendert , , gir det deg ingen advarsel, mye mindre varsel! Men hvis applikasjonen din nå kjører i bakgrunnsstatus, ringer systemet programmetWillTerminate: metode for programdelegatet.
Når applikasjonsdelegatet sendes, sendes programmetWillTerminate: melding i ikke-multitaskingsprogrammer, eller de som kjører i bakgrunnen, må du gjøre de samme typene du gjør i programmetDidEnterBackground: bortsett fra denne gangen gjør du at de vet at søknaden din har vunnet kommer ikke tilbake fra bakgrunnen.
Din søknadWillTerminate: Implementering av metoden har en begrenset (om enn ikke dokumentert) tid til å gjøre hva den trenger å gjøre og returnere. Lengre enn det, og søknaden din avsluttes og renses fra minnet. (Terminator kaller ikke rundt.)