Det er fortsatt mange som ikke vet hvordan multitasking fungerer i iOS. Til å begynne med er det imidlertid nødvendig å påpeke at dette ikke er ekte multitasking, men en veldig smart løsning som ikke belaster systemet eller brukeren.
Man kan ofte høre overtro på at apper som kjører i bakgrunnen i iOS fyller opp driftsminnet, noe som fører til systemnedgang og batterilevetid, så brukeren bør slå dem av manuelt. Multitasking-linjen inneholder faktisk ikke en liste over alle kjørende bakgrunnsprosesser, men bare de sist lanserte applikasjonene. Så brukeren trenger ikke å bekymre seg for prosesser som kjører i bakgrunnen bortsett fra i noen få tilfeller. Når du trykker på Hjem-knappen går applikasjonen vanligvis i dvale eller lukkes, slik at den ikke lenger laster prosessoren eller batteriet og om nødvendig frigjør nødvendig minne.
Så dette er ikke fullverdig multitasking når du har dusinvis av prosesser i gang. Bare ett program kjører alltid i forgrunnen, som settes på pause eller slås helt av om nødvendig. Bare noen få sekundære prosesser kjører i bakgrunnen. Det er derfor du sjelden vil støte på et programkrasj på iOS, for eksempel er Android overveldet med kjørende programmer som brukeren må ta seg av. På den ene siden gjør dette arbeidet med enheten ubehagelig, og på den andre siden forårsaker det for eksempel treg oppstart og overganger mellom applikasjoner.
Applikasjonskjøringstype
Applikasjonen på iOS-enheten din er i en av disse 5 tilstandene:
- Løping: applikasjonen startes og kjører i forgrunnen
- Bakgrunn: den kjører fortsatt, men kjører i bakgrunnen (vi kan bruke andre applikasjoner)
- Suspendert: Bruker fortsatt RAM, men kjører ikke
- Inaktiv: applikasjonen kjører, men indirekte kommandoer (for eksempel når du låser enheten mens applikasjonen kjører)
- Løper ikke: Søknaden er avsluttet eller har ikke startet
Forvirringen kommer når appen går i bakgrunnen for ikke å forstyrre. Når du trykker på Hjem-knappen eller bruker bevegelsen for å lukke applikasjonen (iPad), går applikasjonen i bakgrunnen. De fleste apper suspenderes i løpet av sekunder (De lagres i iDevices RAM slik at de kan startes raskt, de belaster ikke prosessoren like mye og sparer dermed batterilevetid) Du tenker kanskje at hvis en app fortsetter å bruke minne, har du for å slette den manuelt for å frigjøre den. Men du trenger ikke å gjøre det, for iOS vil gjøre det for deg. Hvis du har en krevende applikasjon suspendert i bakgrunnen, for eksempel et spill som bruker store mengder RAM, vil iOS automatisk fjerne det fra minnet når det er nødvendig, og du kan starte det på nytt ved å trykke på applikasjonsikonet.
Ingen av disse tilstandene gjenspeiles i multitasking-linjen, panelet viser bare en liste over nylig lanserte apper uavhengig av om appen er stoppet, satt på pause eller kjører i bakgrunnen. Du kan også legge merke til at programmet som kjører for øyeblikket ikke vises i Multitasking-panelet
Bakgrunnsoppgaver
Vanligvis, når du trykker på Hjem-knappen, vil applikasjonen kjøre i bakgrunnen, og hvis du ikke bruker den, stopper den automatisk i løpet av fem sekunder. Så hvis du for eksempel laster ned en podcast, vurderer systemet den som en applikasjon som kjører og forsinker avslutningen med ti minutter. Senest etter ti minutter frigjøres prosessen fra minnet. Kort sagt, du trenger ikke å bekymre deg for å avbryte nedlastingen ved å trykke på Hjem-knappen, hvis det ikke tar mer enn 10 minutter å fullføre den.
Ubestemt kjører i bakgrunnen
Ved inaktivitet avslutter systemet applikasjonen innen fem sekunder, og ved nedlastinger blir avslutningen forsinket i ti minutter. Det er imidlertid et lite antall applikasjoner som krever kjøring i bakgrunnen. Her er noen eksempler på apper som kan kjøre i bakgrunnen på ubestemt tid i iOS 5:
- Apper som spiller av lyd og må avbrytes en stund (stopper musikk under en telefonsamtale osv.),
- Applikasjoner som sporer posisjonen din (navigasjonsprogramvare),
- Programmer som mottar VoIP-anrop, for eksempel hvis du bruker Skype, kan du motta et anrop selv når programmet er i bakgrunnen,
- Automatiske nedlastinger (f.eks. Newsstand).
Alle applikasjoner bør lukkes hvis de ikke lenger utfører en oppgave (som bakgrunnsnedlastinger). Det er imidlertid unntak som kjører i bakgrunnen kontinuerlig, for eksempel den opprinnelige Mail-appen. Hvis de kjører i bakgrunnen, tar de opp minne, CPU-bruk eller reduserer batterilevetiden
Apper som har lov til å kjøre i bakgrunnen på ubestemt tid, kan gjøre alt de gjør mens de kjører, fra å spille musikk til å laste ned nye podcast-episoder.
Som jeg nevnte før, trenger brukeren aldri å lukke appene som kjører i bakgrunnen. Det eneste unntaket fra dette er når en app som kjører i bakgrunnen krasjer eller ikke våkner fra dvale. Brukeren kan deretter lukke applikasjonene manuelt i multitasking-linjen, men dette skjer sjelden.
Så generelt trenger du ikke å administrere bakgrunnsprosesser fordi systemet vil ta seg av dem selv. Det er derfor iOS er et så ferskt og raskt system.
Fra et utviklerperspektiv
Applikasjonen kan reagere med totalt seks forskjellige tilstander som en del av multitasking:
1. applicationWillResignActive
I oversettelse betyr denne tilstanden at applikasjonen vil fratre som den aktive applikasjonen (det vil si applikasjonen i forgrunnen) i fremtiden (et spørsmål om noen få millisekunder). Dette skjer for eksempel når du mottar et anrop mens du bruker applikasjonen, men samtidig forårsaker denne metoden også denne tilstanden før applikasjonen går i bakgrunnen, så du må ta hensyn til disse endringene. Denne metoden egner seg også slik at den for eksempel stanser alle aktivitetene den utfører når det kommer en innkommende samtale og venter til samtalen er ferdig.
2. applicationDidEnterBackground
Statusen indikerer at applikasjonen har gått i bakgrunnen. Utviklere bør bruke denne metoden for å suspendere alle prosesser som ikke nødvendigvis trenger å kjøre i bakgrunnen og tømme minnet for ubrukte data og andre prosesser, for eksempel utløpende tidtakere, tømme innlastede bilder fra minnet som ikke nødvendigvis er nødvendig, eller lukking tilkoblinger med servere, med mindre det er avgjørende for applikasjonen å fullføre tilkoblinger i bakgrunnen. Når metoden påkalles i en applikasjon, bør den i hovedsak brukes til å suspendere applikasjonen fullstendig hvis en del av den ikke er nødvendig for å kjøre i bakgrunnen.
3. applicationWillEnterForeground
Denne tilstanden er det motsatte av den første tilstanden, hvor søknaden vil gå tilbake til den aktive tilstanden. Tilstanden betyr ganske enkelt at soveappen gjenopptas fra bakgrunnen og vises i forgrunnen i løpet av de neste millisekunder. utviklere bør bruke denne metoden for å gjenoppta alle prosesser som var inaktive mens applikasjonen var i bakgrunnen. Tilkoblinger til servere bør gjenopprettes, tidtakere tilbakestilles, bilder og data lastes inn i minnet, og andre nødvendige prosesser kan gjenopptas rett før brukeren ser den innlastede applikasjonen igjen.
4. ApplicationDidBecomeActive
Tilstanden indikerer at applikasjonen nettopp har blitt aktiv etter å ha blitt gjenopprettet til forgrunnen. Dette er en metode som kan brukes til å gjøre ytterligere justeringer av brukergrensesnittet eller for å gjenopprette brukergrensesnittet til dets opprinnelige tilstand osv. Dette skjer faktisk i det øyeblikket brukeren allerede ser applikasjonen på skjermen, så det er nødvendig å bestemme med forsiktighet hva som skjer i metoden for denne og i den forrige metoden. De kalles opp etter hverandre med en forskjell på noen få millisekunder.
5. applicationWillTerminate
Denne tilstanden skjer noen få millisekunder før applikasjonen avsluttes, det vil si før applikasjonen faktisk avsluttes. Enten manuelt fra multitasking eller når du slår av enheten. Metoden skal brukes til å lagre behandlede data, for å avslutte alle aktiviteter og for å slette data som ikke lenger vil være nødvendig.
6. ApplicationDidReceiveMemoryWarning
Det er den siste staten som er mest diskutert. Den er ansvarlig for om nødvendig å fjerne applikasjonen fra iOS-minnet hvis den bruker systemressurser unødvendig. Jeg vet ikke spesifikt hva iOS gjør med bakgrunnsapper, men hvis den trenger en app for å frigjøre ressurser til andre prosesser, ber den den om å frigi alle ressursene den har med en minneadvarsel. Så denne metoden kalles i applikasjonen. Utviklere bør implementere det slik at applikasjonen gir fra seg minnet den har tildelt, lagrer alt som pågår, sletter unødvendige data fra minnet og ellers frigjør minne på tilstrekkelig måte. Det er sant at mange utviklere, selv nybegynnere, ikke tenker på eller forstår slike ting, og da kan det skje at applikasjonen deres truer batterilevetiden og/eller unødvendig forbruker systemressurser, selv i bakgrunnen.
dommen
Disse seks tilstandene og deres tilknyttede metoder er bakgrunnen for all «multitasking» i iOS. det er et flott system, så lenge utviklerne ikke ser bort fra det faktum at det er behov for å være ansvarlig for hva applikasjonen kaster opp på brukernes enheter, om de minimeres eller får advarsler fra systemet og så videre.
kilde: macworld.com
Forfattere: Jakub Požárek, Martin Doubek (ArnieX)
Har du også et problem å løse? Trenger du råd eller kanskje finne riktig applikasjon? Ikke nøl med å kontakte oss via skjemaet i seksjonen Rådgivning, neste gang svarer vi på spørsmålet ditt.
Hei, veldig kul artikkel, men jeg lurer på om du har teknisk støtte for den. For jeg har løst batteriet flere ganger på kvelden før jeg legger meg og det hendte at med wifi og mobildata slått av, så tok det mer enn i et annet tilfelle med wifi avslått og kun 3G.
Dessverre er erfaringen at i iOS må applikasjoner slås av manuelt, og systemet kjører ikke lenger like bra som før.
Jeg byttet ut iPhonen min med en Windows Phone (Samsung Omnia W til 6200,-) og hastigheten på systemet er på et helt annet nivå.
Jeg er redd for at når Windows 8 Metro-nettbrettene kommer ut, vil jeg også bytte ut iPad...
@007 – ja, hvis du sammenligner de gamle iPhone3G-ene med de nye WP-ene, ja (hvem hadde forventet det?) vil WP-en være ganske mye raskere. Ellers faller ikke sladderen om Karlulka deg i god jord og det var på sin plass å sammenligne nåværende HW. Jeg kjøpte også WP7 og endte til slutt opp med 4s, som representerer et helt annet nivå av brukervennlighet enn WP7. Så gå hyggelig og uendelig bla gjennom flisene.
Jeg er helt enig med Paja
Jeg ville bidra igjen fra ruskene fra et annet fat - Samsung Galaxy S og iPhone 4 - jeg vil si sammenlignbart med tanke på alder? På tidspunktet for iOS 4, og når det gjelder brukervennlighet og hastighet et annet sted enn Android, har Apple løst konseptet med å jobbe med applikasjoner veldig bra, men det samme gjelder ikke lenger med Android. Til slutt endte jeg opp med 4S uansett og jeg har ingen klager, for "det bare fungerer" .. og det fungerer veldig raskt!
Teorien er vakker... Men i praksis lukker jeg fortsatt søknaden i baren ;)
Takk, veldig interessant, pragmatisk, interessant, det mangler ikke sving og dybde. Understreker betydelig besettelse av dagens ungdom med dette forbudte merket! Men takk for henne, så vel som for denne artikkelen.
Artikkelen er helt feil.
Applikasjonen avsluttes ikke når Hjem-knappen trykkes, som feilaktig oppgitt, men stopper. Dvs. definitivt ikke slett fra minnet og ikke avslutt. Bare sett kjøringen på pause, iOS vil gi denne appen 0 % CPU-tid. Den "bytter" definitivt ikke noe sted i iDevice-minnet, som det står i artikkelen. Det er virkelig takket være det faktum at det er mulig å bruke app-bytte.
Applikasjonen fjernes fra minnet når telefonen har lite minne til å kjøre andre applikasjoner med høyere prioritet (vanligvis kjører en annen applikasjon i forgrunnen).
I det første tilfellet har du rett, det var en oversettelsesfeil. Når det gjelder bytte, snakker vi ikke om det her, vi snakker om driftsminnet, ikke lagringsplassen i iOS-enheten.
bildet av applikasjonen lagres i minnet i en begrenset tid til det påkalles igjen av en kommando (se 13,7 GB av 16 GB: 2,3 GB er reservert for systemet og suspenderte applikasjoner)
Dermed er det nødvendig å skille mellom applikasjoner som Navigasjon, Skype og lignende, disse applikasjonene forblir aktive selv i bakgrunnen, eller en bestemt funksjon slutter ikke og fortsetter for eksempel å sende data om sin plassering eller plasseringsinformasjon. Eller som Vokul i pord-modus lytt og multitasking lytter fortsatt i bakgrunnen.
Disse applikasjonene tapper batteriet, og det er nødvendig å lukke dem manuelt og ikke vente på iOS. med andre er det ikke nødvendig, der bare i tilfelle applikasjonen krasjer.
Jeg kan ikke si meg enig i artikkelen. Min. på en 1. generasjons iPad (iOS 5.0.1) er det tydelig å se om jeg har mange "åpne" apper i multitasking-linjen eller bare noen få. iOS prøver å rense minnet, men det er åpenbart ikke nok - den lille størrelsen på RAM er sannsynligvis den største svakheten.
så mye avhenger av systemet og maskinvaren som brukes, det er ganske logisk at det vil være verre på en iPad 1 med iOS 5.0.1 enn om den var på en 2. generasjons iPad
Beklager kompis, dette er en beskrivelse av den IDEALE måten det skal fungere på. Dessverre er virkeligheten en helt annen og du ville visst det hvis du brukte Apple-produkter, minst like mye som jeg gjør (dvs. av og til).
"Du kan ofte høre overtro at apper som kjører i bakgrunnen i iOS fyller opp driftsminnet,"
Det er ikke overtro, det er bare et faktum. Tross alt påstår du det selv i artikkelen.
"Som jeg nevnte tidligere, trenger brukeren aldri å lukke applikasjonene som kjører i bakgrunnen."
TULL. Det er bare tull, eplepropaganda, ikke bli sint på meg.
"Men du trenger ikke å gjøre det, fordi iOS vil gjøre det for deg. Hvis du har en krevende applikasjon suspendert i bakgrunnen, for eksempel et spill som bruker mye RAM, vil iOS automatisk fjerne det fra minnet når det er nødvendig, og du kan starte det på nytt ved å trykke på applikasjonsikonet."
Ikke sant. Situasjonen er litt annerledes. Et typisk eksempel – jeg har krevende applikasjoner som kjører i bakgrunnen, jeg trenger spill. Jeg starter nettleseren, åpner et par faner -> trenger mer minne. Hva vil skje? Jeg fortsetter å kreve applikasjoner i bakgrunnen, tvert imot, NETTLESEREN SEG FALLER. Lukker jeg de krevende applikasjonene manuelt, fungerer nettleseren lenge uten problemer.
Dette er praksis, ikke teori. Og jeg er overrasket over at du som langvarig bruker av et Apple-produkt fortsatt ikke vet dette.
Takk, dette er veldig godt beskrevet og godt forklart. Du har hjulpet meg ganske mye ;-) ♥
Bare for å begynne, jeg er verken for eller imot iOS, akkurat som med Android, men det er et par merkelige ting her, hvis som det står her: "you sjeldent encounter an application crash on iOS" then on Android apps crash ca. en gang i året: -P
http://dotekomanie.blog.mobilmania.cz/2012/02/stabilita-ios-vs-android/
Ja, men tilfellene når du trenger å lukke applikasjonen manuelt er virkelig minimale, jeg brukte det omtrent en gang? ;-) og å gi en lenke til en sammenligningstest fra Mobilemania er ganske meningsløst, når jeg vil lese om reklamen som Google betalte, skal jeg ta en titt der ;-) alle kan få hvilken som helst android telefon i hånden og den vil ikke kjøre rent, det vil si med unntak av Galaxy Nexus, som er systemet mer eller mindre skreddersydd. Totalt sett er Android en katastrofe
@Mek – Jeg har brukt Apple-produkter daglig i flere år, og dette har aldri skjedd meg, så teorien din fungerer liksom ikke.
OT:
@redakce – Det kan ses at det hele tiden jobbes med nettsiden eller det skjer noe med den, men jeg har på følelsen at det ikke tar en uke før alt fungerer som det skal. Og jeg kommer egentlig ikke hit lenger, for det nye utseendet passer ikke meg. Jeg brukte i hvert fall mobilversjonen på iPhone, men nå fungerer det ikke i det hele tatt – hvordan kommer det? De svarer foreløpig ikke på innlegg i kommentarfeltet.
@SteveJSF Ting blir dessverre ikke alltid slik vi ønsker. Når det gjelder svarene, brøt den nye SEO-pluginen dem, den blir for øyeblikket løst.
WP-Touch avsluttet også tjenesten vår av en eller annen grunn, så vi bestemte oss for å komme opp med en bedre løsning enn denne pluginen. Så du kan glede deg til neste nyhet snart :-)
Fin artikkel. Når det gjelder praksis vil jeg si at jeg er enig i flere ting og som oftest fungerer det som sagt, men dessverre er det fortsatt dårlig skrevet søknader som ikke oppfører seg riktig, og så er det saker som den ene. bemerket av noen lesere. Jeg synes at Skype er et veldig godt eksempel, jeg vet fra praksis at det fortsatt kjører i bakgrunnen (og det er greit og det er slik det skal være), men problemet er at denne applikasjonen tapper batteriet på enheten mye og Jeg kan ikke se det ordentlig lenger. Omvendt, applikasjoner som Facebook, Badoo, etc. de kjører også fortsatt i bakgrunnen, men forbruket deres er nesten umerkelig (jeg merker i hvert fall ingen). Så jeg tror feilen ligger i de enkelte søknadene. Hvis du visste hvilke, ville det være nok å slå av manuelt bare de!
Så praksisen er at Facebook kjører etter behov og Skype kun når det trengs.
Vel, på den annen side, hvis jeg trenger å spare batteri og jeg vet at jeg må holde iPhone "i live" så lenge som mulig, så skrur jeg også av alt som er unødvendig i multitasking, men stort sett har det ikke stor innvirkning, men om nødvendig begrenser jeg 3G, alt mobilt internett, WiFi, lokasjonstjenester , flymodus, lysstyrke osv. Som en del av rutinen slår jeg også av de nevnte applikasjonene i multitasking.
Så personlig tror jeg at artikkelen er sann, dessverre avviser noen programmerere disse tingene med applikasjonene sine, fordi applikasjonene deres er feil og etter min mening er det bare to løsninger for dette 1. Hvis det er mulig å ikke bruke applikasjonen og finne en alternativ hvis mulig, eller 2. Hvis det ikke er mulig, se f.eks Skype, skriv det til den oppgitte programmereren i rapporten og håper at de vil gjøre noe med det.
Det kan være meningsløst å deaktivere apper manuelt, men jeg gjør det likevel. Jeg prøvde også å ikke slå av applikasjonssystemet, la dem kjøre (eller la dem sove i bakgrunnen) og batterilevetiden var mye lavere, jeg måtte også starte iPad 2 på nytt etter omtrent tre uker, den reagerte sakte. Så jeg slår av appene manuelt, batteriet varer lenger, jeg startet nylig på nytt XNUMX. juledag og det går fint.
Forresten, jeg gjør det samme i Mac OS X, jeg lukker bare programmet jeg ikke trenger (CMD+Q), det er bedre enn å la det sove i bakgrunnen og spise opp RAM unødvendig (som OS X kan' fungerer ikke veldig bra). Jeg har lite RAM, bare 8 GB, men i Windows 7 med 8 GB, reagerte ikke systemet sakte eller byttet, i OS X er dette et ganske vanlig fenomen (jeg har aldri slått av datamaskinen, jeg gjør det med Mac også, så en måned og mer oppetid er ikke et unntak, problemet er at jeg noen ganger må starte Mac-en på nytt som en forholdsregel for å frigjøre RAM og "speed up", Windows 7 trenger ikke dette).
Jeg er mer interessert i hvordan man faktisk sprenger applikasjonen. Det som skjedde med meg var at applikasjonen (spesielt på Geocaching) kom inn i en tilstand der den lastet noe fra overordnet server og ble sittende fast i den tilstanden. Hjem-knappen fungerte, etter omstart gikk den tilbake til frossen tilstand (der jeg slapp). Manuell avslutning (til multitasting-menyen, hold ikonet og minus for å lukke) = applikasjonen forsvant, etter omstart åpnet den i sin opprinnelige tilstand hvor den frøs. Så jeg lukket alt, skrudde av telefonen, slo den på, dobbeltklikket HJEM og se og se – alle applikasjonene var der som de var før de ble lukket rett før de slo seg av. Omstarten hjalp heller ikke - hold hjem og øvre til det blir varmt. Det eneste som hjalp var å fjerne applikasjonen fra telefonen, starte den på nytt og installere den på nytt på telefonen. På en eller annen måte tok jeg det ikke.
Denne multitasking-administrasjonen fungerer, og det er opp til utviklerne å takle disse situasjonene. For de som er interessert i en mer detaljert og faglig beskrivelse av hele situasjonen, vil jeg skrive her hvordan det er.
Søknaden kan svare på totalt 6 stater, og disse statene er:
applicationWillResignActive
applicationDidEnterBackground
applicationWillEnterForeground
applikasjonen ble aktiv
ApplicationWillTerminate
ApplicationDidReceiveMemoryWarning
Nå skal jeg prøve å beskrive disse tilstandene mer detaljert.
applicationWillResignActive – denne tilstanden betyr at i fremtiden (et spørsmål om noen få millisekunder) vil applikasjonen fratre som den aktive applikasjonen (dvs. forgrunnsapplikasjonen) dette skjer for eksempel når du mottar et anrop mens du bruker applikasjonen, men samtidig dette metoden derfor vil denne tilstanden utløses selv før applikasjonen går i bakgrunnen, så du må ta hensyn til disse endringene. Denne metoden egner seg også slik at den for eksempel stanser alle aktivitetene den utfører når det kommer en innkommende samtale og venter til samtalen er ferdig.
applicationDidEnterBackground - denne statusen indikerer at applikasjonen har kommet inn i bakgrunnen, utviklere bør bruke denne metoden for å suspendere alle prosesser som ikke nødvendigvis trenger å kjøre i bakgrunnen og rense minnet for ubrukte data og andre prosesser, for eksempel utløpstidtakere, klare fra minnelastede bilder som ikke nødvendigvis vil være nødvendig eller avslutte forbindelsen med serverne hvis det ikke er kritisk for applikasjonen å fullføre forbindelsen i bakgrunnen. I utgangspunktet bør denne metoden når den kalles inn i applikasjonen brukes til å suspendere applikasjonen fullstendig hvis en del av den ikke er nødvendig for å kjøre i bakgrunnen.
applicationWillEnterForeground – denne tilstanden er det motsatte av den første tilstanden når applikasjonen vil gå tilbake til den aktive tilstanden. Denne applikasjonstilstanden betyr ganske enkelt at i løpet av de neste millisekunder vil den sovende applikasjonen gjenopptas fra bakgrunnen og vises i forgrunnen (applikasjonen kommer inn i forgrunnen), denne metoden bør brukes av utviklere for å gjenoppta alle prosesser som var inaktive mens applikasjonen var i bakgrunnen bør tilkoblinger til servere gjenopprettes, tidtakere tilbakestilles, bilder og data lastes inn i minnet, og andre nødvendige prosesser kan gjenopptas rett før brukeren ser den innlastede applikasjonen igjen.
applicationDidBecomeActive – denne tilstanden indikerer at applikasjonen nettopp har blitt aktiv etter å ha blitt gjenopprettet til forgrunnen, dette er en metode som kan brukes til å gjøre ytterligere justeringer av brukergrensesnittet eller gjenopprette brukergrensesnittet til dets opprinnelige tilstand, etc. denne metoden skjer faktisk når brukeren allerede kan se på skjermen, så det er nødvendig å bestemme fra balansen hva som skjer i denne metoden og i den forrige metoden. De kalles opp etter hverandre med en forskjell på noen få millisekunder.
applicationWillTerminate - denne tilstanden skjer noen få millisekunder før applikasjonen avsluttes, det vil si før applikasjonen faktisk avsluttes. Enten manuelt fra multitasking eller når du slår av enheten. Denne metoden bør brukes til å lagre behandlede data og for å avslutte alle aktiviteter og slette data som ikke lenger vil være nødvendig.
applicationDidReceiveMemoryWarning - og dette er en tilstand som diskuteres mye her, om nødvendig vil iOS fjerne applikasjonen fra minnet hvis den bruker systemressurser unødvendig. Jeg vet ikke nøyaktig hva iOS gjør med bakgrunnsapper, men hvis den trenger en app for å frigjøre ressurser til andre prosesser, ber den den med en minneadvarsel om å frigi ressursene den har. Så denne metoden kalles i applikasjonen, og utviklerne bør implementere den slik at applikasjonen gir fra seg minnet den har, lagrer de behandlede og sletter unødvendige data fra minnet, og ellers frigjør minnet tilstrekkelig. Det er sant at mange utviklere, for eksempel nybegynnere, ikke tenker på slike ting eller ikke forstår dem, og da kan det skje at applikasjonen deres setter batterilevetiden i fare og/eller unødvendig forbruker systemressurser selv i bakgrunnen. Jeg vet ikke hvordan iOS vil oppføre seg hvis applikasjonen ikke gjør noe etter å ha mottatt en minneadvarsel og fortsetter å forbruke systemressurser som før.
Disse få tilstandene og tilknyttede metodene står bak hele "multitasking" i iOS... det er et flott system hvis utviklerne ikke ignorerer behovet for å være ansvarlig for hva appene vil kaste opp på brukernes enheter hvis de minimeres eller få advarsler fra systemet og mer ...
Jeg håper denne korte beskrivelsen hjelper deg å forstå hvordan applikasjonen er involvert i å få alt til å fungere problemfritt. Så det er nesten mulig å si at det er en feil med feil bruk av brukeren, som kan forstås som - hvis du bruker stort sett gratis applikasjoner fra amatørutviklere i stort antall, vil iOS-enheten din fungere dårligere enn om du bruker en stor antall gratis og betalte applikasjoner fra erfarne eller profesjonelle utviklere. Det er ikke dermed sagt at det ikke finnes unntak i begge kretser. Foursquare oppfører seg for eksempel ganske merkelig og krevende, og samtidig skulle man forvente at de er svært dyktige utviklere som gir mye tid til minne og batterihåndtering, men det er motsatt. Det største problemet med 4SQ er kommunikasjon med servere, som ofte henger og blir overveldet. Dette er bare et eksempel på at selv kjente applikasjoner har problemer, noe som ikke endrer på at 4SQ er en flott tjeneste.
Ha det gøy Epler!! :)
Vi la til informasjonen i artikkelen med tillatelse fra forfatteren ;-)
Beklager, ENTER var overalt mellom avsnittene, de kunne gjøre noe med det her slik at kommentarene i det minste har litt RIK TEKSTFORMATERING.
ArnieX: takk for kommentaren!!
At Faramir: Jeg bare om problemet ditt, jeg vet ikke om det vil hjelpe i ditt tilfelle, men jeg vet av egen erfaring at hvis du lukker applikasjonen (i multitasking) tar det noen sekunder før den lukkes, så hvis du slår den av Jeg anbefaler å vente noen sekunder (jeg venter ca. 10 sekunder for å være sikker) til den definitivt er ferdig og først da starter jeg den igjen.
Du er velkommen ;) Jeg hjelper gjerne til hvis jeg har mulighet til å bidra.
Hvordan skal det være med Meeb, når jeg logger inn på ICQ eller FB chat gjennom det, logges det automatisk ut etter 10 minutter og jeg går offline eller fortsetter det å fungere? takk for oppklaringen :P
Etter ti minutter blir applikasjonens tilkobling til Internett ganske enkelt avbrutt. Du vil imidlertid fortsatt være online på Meeba-serveren og du vil motta et push-varsel hvis noen skriver til deg. Etter å ha åpnet applikasjonen på nytt, opprettes forbindelsen om et øyeblikk, og du kan fortsette å chatte med glede.
Så hvis jeg har forstått artikkelen du linket riktig, refererer statistikken kun til programkrasj når de starter, som er en ganske liten prosentandel av tilfeller hvor krasj kan oppstå. Derfor er det umulig å konkludere fra denne "forskningen" at iOS er mindre stabilt etter min mening. Videre glemte oversetteren av artikkelen hentet fra Forbes å nevne at selskapet som leverer data om programkrasj støttes av blant annet Google ("Crittercism, som er støttet av Google Ventures,...").