Er zijn nog steeds veel mensen die niet weten hoe multitasken werkt in iOS. Om te beginnen moet echter worden opgemerkt dat dit geen echte multitasking is, maar een zeer slimme oplossing die het systeem en de gebruiker niet belast.
Vaak hoor je het bijgeloof dat apps die op de achtergrond draaien in iOS het werkgeheugen vullen, wat leidt tot systeemvertraging en levensduur van de batterij, zodat de gebruiker ze handmatig moet uitschakelen. De multitaskingbalk bevat eigenlijk niet een lijst met alle actieve achtergrondprocessen, maar alleen de meest recent gelanceerde applicaties. De gebruiker hoeft zich dus geen zorgen te maken over processen die op de achtergrond worden uitgevoerd, behalve in enkele gevallen. Wanneer je op de Home-knop drukt, gaat de applicatie meestal in de sluimerstand of sluit hij af, waardoor deze de processor of de batterij niet meer belast en indien nodig het benodigde geheugen vrijmaakt.
Dit is dus geen volwaardige multitasking als je tientallen processen draait. Er draait altijd maar één applicatie op de voorgrond, die indien nodig wordt gepauzeerd of volledig wordt uitgeschakeld. Slechts enkele secundaire processen draaien op de achtergrond. Daarom zul je op iOS zelden een applicatiecrash tegenkomen; Android wordt bijvoorbeeld overspoeld met draaiende applicaties waar de gebruiker voor moet zorgen. Dit maakt het werken met het apparaat enerzijds onaangenaam en anderzijds zorgt het bijvoorbeeld voor trage opstart en overgangen tussen applicaties.
Runtimetype van toepassing
De applicatie op uw iOS-apparaat bevindt zich in een van deze 5 statussen:
- Rennen: de applicatie wordt gestart en draait op de voorgrond
- Achtergrond: het is nog steeds actief, maar draait op de achtergrond (we kunnen andere applicaties gebruiken)
- Opgeschort: Gebruikt nog steeds RAM, maar werkt niet
- Inactief: de applicatie is actief, maar indirecte opdrachten (bijvoorbeeld wanneer u het apparaat vergrendelt terwijl de applicatie actief is)
- Niet rennen: De toepassing is beëindigd of niet gestart
De verwarring ontstaat wanneer de app naar de achtergrond gaat om niet te storen. Wanneer u op de Home-knop drukt of het gebaar gebruikt om de applicatie te sluiten (iPad), gaat de applicatie naar de achtergrond. De meeste apps worden binnen enkele seconden opgeschort (ze worden opgeslagen in het RAM-geheugen van het iDevice, zodat ze snel kunnen worden gestart, ze belasten de processor niet zo vaak en verlengen zo de levensduur van de batterij). Je zou kunnen denken dat als een app geheugen blijft gebruiken, je om het handmatig te verwijderen om het vrij te maken. Maar dat hoeft u niet te doen, want iOS doet het voor u. Als je een veeleisende applicatie op de achtergrond hebt opgeschort, zoals een game die een grote hoeveelheid RAM gebruikt, zal iOS deze indien nodig automatisch uit het geheugen verwijderen en kun je deze opnieuw starten door op het applicatiepictogram te tikken.
Geen van deze statussen wordt weerspiegeld in de multitaskingbalk; de balk toont alleen een lijst met recent gelanceerde apps, ongeacht of de app is gestopt, gepauzeerd of op de achtergrond actief is. Mogelijk merkt u ook dat de toepassing die momenteel wordt uitgevoerd, niet in het Multitasking-paneel verschijnt
Achtergrond taken
Normaal gesproken wordt de applicatie op de achtergrond uitgevoerd als u op de Home-knop drukt. Als u deze niet gebruikt, wordt deze automatisch binnen vijf seconden gepauzeerd. Als u dus bijvoorbeeld een podcast downloadt, beoordeelt het systeem deze als een actieve applicatie en wordt de beëindiging met tien minuten uitgesteld. Uiterlijk na tien minuten wordt het proces uit het geheugen vrijgegeven. Kortom, u hoeft zich geen zorgen te maken dat u uw download onderbreekt door op de Home-knop te drukken, als het niet meer dan 10 minuten duurt om de download te voltooien.
Onbepaalde tijd actief op de achtergrond
Bij inactiviteit beëindigt het systeem de applicatie binnen vijf seconden en bij downloads wordt de beëindiging met tien minuten uitgesteld. Er zijn echter een klein aantal applicaties die op de achtergrond moeten worden uitgevoerd. Hier zijn enkele voorbeelden van apps die in iOS 5 voor onbepaalde tijd op de achtergrond kunnen draaien:
- Applicaties die geluid afspelen en een tijdje onderbroken moeten worden (muziek pauzeren tijdens een telefoongesprek, enz.),
- Applicaties die uw locatie volgen (navigatiesoftware),
- Applicaties die VoIP-oproepen ontvangen, als u bijvoorbeeld Skype gebruikt, kunt u ook gebeld worden als de applicatie op de achtergrond staat.
- Automatische downloads (bijv. Kiosk).
Alle applicaties moeten worden gesloten als ze een taak niet langer uitvoeren (zoals downloaden op de achtergrond). Er zijn echter uitzonderingen die continu op de achtergrond draaien, zoals de native Mail-app. Als ze op de achtergrond actief zijn, nemen ze geheugen en CPU-gebruik in beslag of verkorten ze de levensduur van de batterij
Apps die voor onbepaalde tijd op de achtergrond mogen draaien, kunnen alles doen wat ze doen terwijl ze actief zijn, van muziek afspelen tot het downloaden van nieuwe podcastafleveringen.
Zoals ik eerder al zei, hoeft de gebruiker nooit de apps te sluiten die op de achtergrond draaien. De enige uitzondering hierop is wanneer een app die op de achtergrond draait, crasht of niet goed uit de slaapstand ontwaakt. De gebruiker kan de applicaties vervolgens handmatig afsluiten in de multitaskingbalk, maar dit gebeurt zelden.
Over het algemeen hoeft u dus geen achtergrondprocessen te beheren, omdat het systeem daar zelf voor zorgt. Daarom is iOS zo'n fris en snel systeem.
Vanuit het perspectief van een ontwikkelaar
De applicatie kan reageren met in totaal zes verschillende statussen als onderdeel van multitasking:
1. toepassingWillResignActive
Vertaald betekent deze status dat de applicatie in de toekomst (een kwestie van een paar milliseconden) niet langer de actieve applicatie zal zijn (dat wil zeggen, de applicatie op de voorgrond). Dit gebeurt bijvoorbeeld wanneer u een oproep ontvangt terwijl u de applicatie gebruikt, maar tegelijkertijd veroorzaakt deze methode deze status ook voordat de applicatie naar de achtergrond gaat, dus u moet met deze wijzigingen rekening houden. Deze methode is ook geschikt om bijvoorbeeld alle activiteiten die hij uitvoert op te schorten als er een oproep binnenkomt en te wachten tot het einde van het gesprek.
2. applicatieDidEnterBackground
De status geeft aan dat de applicatie naar de achtergrond is verdwenen. Ontwikkelaars moeten deze methode gebruiken om alle processen op te schorten die niet noodzakelijkerwijs op de achtergrond hoeven te draaien en om het geheugen te wissen van ongebruikte gegevens en andere processen, zoals het aflopen van timers, het wissen van geladen afbeeldingen uit het geheugen die niet noodzakelijkerwijs nodig zijn, of het sluiten van verbindingen met servers, tenzij het van cruciaal belang is dat de applicatie verbindingen op de achtergrond voltooit. Wanneer de methode in de applicatie wordt aangeroepen, moet deze in principe worden gebruikt om de applicatie volledig op te schorten als een deel ervan niet op de achtergrond hoeft te worden uitgevoerd.
3. toepassingWillEnterForeground
Deze staat is het tegenovergestelde van de eerste staat, waar de toepassing zich zal neerleggen bij de actieve staat. De status betekent eenvoudigweg dat de slapende app vanaf de achtergrond wordt hervat en binnen enkele milliseconden op de voorgrond verschijnt. ontwikkelaars moeten deze methode gebruiken om alle processen te hervatten die inactief waren terwijl de applicatie zich op de achtergrond bevond. Verbindingen met servers moeten worden hersteld, timers worden gereset, afbeeldingen en gegevens in het geheugen worden geladen en andere noodzakelijke processen kunnen worden hervat net voordat de gebruiker de geladen applicatie weer ziet.
4. toepassingDidBecomeActive
De status geeft aan dat de applicatie zojuist actief is geworden nadat deze op de voorgrond is hersteld. Dit is een methode die kan worden gebruikt om extra aanpassingen aan de gebruikersinterface te maken of om de UI in de oorspronkelijke staat te herstellen, enz. Dit gebeurt feitelijk op het moment dat de gebruiker de applicatie al op het display ziet, dus het is noodzakelijk om bepaal met voorzichtigheid wat er gebeurt in de methode van deze en in de vorige methode. Ze worden achter elkaar gebeld met een verschil van enkele milliseconden.
5. applicatieWillTerminate
Deze toestand treedt op enkele milliseconden voordat de toepassing wordt afgesloten, dat wil zeggen voordat de toepassing daadwerkelijk wordt beëindigd. Handmatig bij multitasking of bij het uitschakelen van het apparaat. De methode moet worden gebruikt om verwerkte gegevens op te slaan, alle activiteiten te beëindigen en gegevens te verwijderen die niet langer nodig zijn.
6. toepassingDidReceiveMemoryWarning
Het is de laatste staat die het meest besproken wordt. Het is verantwoordelijk voor het, indien nodig, verwijderen van de applicatie uit het iOS-geheugen als deze onnodig systeembronnen gebruikt. Ik weet niet specifiek wat iOS doet met achtergrondapps, maar als het een app nodig heeft om bronnen vrij te geven voor andere processen, vraagt het iOS een geheugenwaarschuwing om de bronnen die het heeft vrij te geven. Deze methode wordt dus aangeroepen in de applicatie. Ontwikkelaars moeten het zo implementeren dat de applicatie het toegewezen geheugen opgeeft, alles wat in uitvoering is opslaat, onnodige gegevens uit het geheugen verwijdert en anderszins voldoende geheugen vrijmaakt. Het is waar dat veel ontwikkelaars, zelfs beginners, zulke dingen niet bedenken of begrijpen, en dan kan het gebeuren dat hun applicatie de levensduur van de batterij in gevaar brengt en/of onnodig systeembronnen verbruikt, zelfs op de achtergrond.
verdikt
Deze zes toestanden en de bijbehorende methoden vormen de achtergrond van alle "multitasking" in iOS. het is een geweldig systeem, zolang ontwikkelaars het feit niet negeren dat het nodig is om verantwoordelijk te zijn voor wat de applicatie op de apparaten van hun gebruikers laat zien, als ze worden geminimaliseerd of waarschuwingen krijgen van het systeem, enzovoort.
Bron: Macworld.com
Auteurs: Jakub Požárek, Martin Doubek (ArnieX)
Heeft u ook een probleem op te lossen? Heeft u advies nodig of misschien wel de juiste toepassing gevonden? Aarzel niet om contact met ons op te nemen via het formulier in de sectie Begeleiding, de volgende keer zullen wij uw vraag beantwoorden.
Hallo, echt gaaf artikel, maar ik vraag me af of je er technische ondersteuning voor hebt. Omdat ik 's avonds voor het naar bed gaan meerdere keren de batterij heb opgelost en het gebeurde dat met wifi en mobiele data uitgeschakeld, het meer duurde dan in een ander geval met wifi uitgeschakeld en alleen 3G.
Helaas is de ervaring dat in iOS applicaties handmatig moeten worden uitgeschakeld en het systeem niet meer zo goed werkt als voorheen.
Ik heb mijn iPhone vervangen door een Windows Phone (Samsung Omnia W voor 6200,-) en de snelheid van het systeem ligt op een heel ander niveau.
Ik ben bang dat als de Windows 8 Metro-tablets uitkomen, ik ook de iPad zal vervangen...
@007 – ja, als je de oude iPhone3G's vergelijkt met de nieuwe WP-versies, dan zal de WP inderdaad een stuk sneller zijn (wie had dat verwacht?). Anders gaan de roddels over Karlulka niet goed bij je en was het passend om de huidige HW te vergelijken. Ik kocht ook WP7 en eindigde uiteindelijk met 4s, wat een heel ander niveau van bruikbaarheid vertegenwoordigt dan WP7. Loop dus gezellig en eindeloos door de tegels.
Ik ben het volledig met Paja eens
Ik zou opnieuw een bijdrage leveren uit het puin van een ander vat - Samsung Galaxy S en iPhone 4 - ik zou zeggen vergelijkbaar qua leeftijd? Ten tijde van iOS 4, en qua bruikbaarheid en snelheid ergens anders dan Android, heeft Apple het concept van het werken met applicaties heel goed opgelost, maar hetzelfde geldt niet meer voor Android. Uiteindelijk ben ik toch bij de 4S uitgekomen en ik heb geen klachten, want "het werkt gewoon" .. en het werkt heel snel!
De theorie is mooi... Maar in de praktijk sluit ik de applicatie nog steeds af in de bar ;)
Bedankt, heel interessant, pragmatisch, interessant, het ontbreekt niet aan swing en diepgang. Dit onderstreept op significante wijze de obsessie van de hedendaagse jeugd met dit verboden merk! Maar bedankt voor haar, maar ook voor dit artikel.
Het artikel is volkomen verkeerd.
De applicatie stopt niet wanneer de Home-knop wordt ingedrukt, zoals ten onrechte wordt vermeld, maar pauzeert. D.w.z. zeker niet uit het geheugen verwijderen en niet stoppen. Pauzeer gewoon de run, iOS geeft deze app 0% CPU-tijd. Het "wisselt" absoluut nergens in het iDevice-geheugen, zoals vermeld in het artikel. Het is echt te danken aan het feit dat het mogelijk is om via de app te schakelen.
De applicatie wordt uit het geheugen verwijderd als de telefoon weinig geheugen heeft om andere applicaties met een hogere prioriteit uit te voeren (meestal wordt er een andere applicatie op de voorgrond uitgevoerd).
In het eerste geval heb je gelijk: het was een vertaalfout. Wat het swappen betreft, daar hebben we het hier niet over, we hebben het over het werkgeheugen, niet over de opslagruimte op het iOS-apparaat.
de afbeelding van de applicatie wordt voor een beperkte tijd in het geheugen opgeslagen totdat deze opnieuw wordt aangeroepen door een opdracht (zie 13,7 GB van de 16 GB: de 2,3 GB is gereserveerd voor de opschorting van het systeem en de applicatie)
Het is dus noodzakelijk om onderscheid te maken tussen applicaties zoals Navigatie, Skype en dergelijke, deze applicaties blijven zelfs op de achtergrond actief, of een bepaalde functie eindigt niet en gaat door met het verzenden van bijvoorbeeld gegevens over de locatie of locatie-informatie. Of zoals Vokul in pord-modus luisteren en multitasken is nog steeds luisteren op de achtergrond.
Deze applicaties trekken de batterij leeg en het is noodzakelijk om ze handmatig af te sluiten en niet op iOS te wachten. bij anderen is het niet nodig, alleen als de applicatie crasht.
Ik kan het niet eens zijn met het artikel. Min. op een iPad van de 1e generatie (iOS 5.0.1) is het duidelijk te zien of ik veel "open" apps in de multitaskingbalk heb of slechts een paar. iOS probeert wel het geheugen op te schonen, maar dat is duidelijk niet voldoende; de kleine omvang van het RAM-geheugen is waarschijnlijk het grootste zwakke punt.
veel hangt dus af van het systeem en de gebruikte hardware, het is vrij logisch dat het op een iPad 1 met iOS 5.0.1 slechter zal zijn dan op een 2e generatie iPad
Sorry maat, dit is een beschrijving van de IDEALE manier waarop het zou moeten werken. Helaas is de realiteit compleet anders en dat zou je weten als je Apple-producten zou gebruiken, tenminste zo vaak als ik (dat wil zeggen af en toe).
"Je hoort vaak bijgeloof dat apps die op de achtergrond draaien in iOS het werkgeheugen vullen",
Het is geen bijgeloof, het is gewoon een feit. Je claimt het immers zelf in het artikel.
"Zoals ik al eerder zei, hoeft de gebruiker de applicaties die op de achtergrond draaien nooit te sluiten."
ONZIN. Dat is gewoon onzin, appelpropaganda, word niet boos op mij.
“Maar dat hoef je niet te doen, want iOS doet het voor je. Als je een veeleisende applicatie op de achtergrond hebt opgeschort, zoals een game die een grote hoeveelheid RAM gebruikt, zal iOS deze indien nodig automatisch uit het geheugen verwijderen en kun je hem opnieuw opstarten door op het applicatiepictogram te tikken.
Niet waar. De situatie is een beetje anders. Een typisch voorbeeld: ik heb veeleisende applicaties op de achtergrond draaien, ik heb games nodig. Ik start de browser, open een paar tabbladen -> heb meer geheugen nodig. Wat zal er gebeuren? Ik blijf applicaties op de achtergrond eisen, integendeel, DE BROWSER ZELF VALT. Als ik de veeleisende applicaties handmatig afsluit, werkt de browser lange tijd zonder problemen.
Dit is praktijk, geen theorie. En het verbaast mij dat je dit als langdurig gebruiker van een Apple-product nog steeds niet weet.
Bedankt, dit is heel goed beschreven en goed uitgelegd. Je hebt me flink geholpen ;-) ♥
Om te beginnen ben ik noch voor, noch tegen iOS, net als bij Android, maar er zijn hier een paar vreemde dingen, als zoals hier geschreven staat: "je komt zelden een applicatie-crash tegen met iOS", en dan crashen Android-apps ongeveer één keer per jaar: -P
http://dotekomanie.blog.mobilmania.cz/2012/02/stabilita-ios-vs-android/
Ja, maar de gevallen waarin je de applicatie handmatig moet sluiten zijn echt minimaal, ik heb het ongeveer één keer gebruikt? ;-) en een link geven naar de vergelijkende test van Mobilemania is nogal zinloos, als ik wil lezen over de reclame die Google heeft betaald, ga ik daar eens kijken ;-) iedereen kan elke Android-telefoon in de hand krijgen en het zal niet schoon werken, met uitzondering van de Galaxy Nexus, waar het systeem min of meer op maat is gemaakt. Over het algemeen is Android een ramp
@Mek – Ik gebruik Apple-producten al een aantal jaren dagelijks en dit is mij nog nooit overkomen, dus je theorie werkt op de een of andere manier niet.
GRAS:
@redakce – Je ziet dat er voortdurend aan de website wordt gewerkt of dat er iets mee gebeurt, maar ik heb het gevoel dat het nog geen week duurt voordat alles werkt zoals het zou moeten werken. En ik kom hier eigenlijk niet meer, omdat de nieuwe look mij niet bevalt. Ik heb tenminste de mobiele versie op de iPhone gebruikt, maar nu werkt het helemaal niet - hoe komt dat? Ze reageren momenteel niet op berichten in de reacties.
@SteveJSF Helaas lopen de dingen niet altijd zoals we willen. Wat de antwoorden betreft: de nieuwe SEO-plug-in heeft ze kapot gemaakt, deze worden momenteel opgelost.
WP-Touch heeft onze service om de een of andere reden ook beëindigd, dus hebben we besloten een betere oplossing te bedenken dan deze plug-in. Je kunt dus snel uitkijken naar het volgende nieuws :-)
Leuk artikel. Wat de praktijk betreft zou ik willen zeggen dat ik het met een aantal dingen eens ben en meestal werkt het zoals gezegd, maar helaas zijn er nog steeds slecht geschreven applicaties die zich niet correct gedragen, en dan zijn er gevallen zoals deze opgemerkt door sommige lezers. Ik vind dat Skype een heel goed voorbeeld is, ik weet uit de praktijk dat het nog steeds op de achtergrond draait (en dat is prima en zo hoort het ook), maar het probleem is dat deze applicatie de batterij van het toestel flink leeg trekt en Ik kan het niet meer goed zien. Omgekeerd zijn applicaties zoals Facebook, Badoo, enz. ze draaien ook nog steeds op de achtergrond, maar hun verbruik is bijna onmerkbaar (ik merk er tenminste niets van). Dus ik denk dat de fout in de individuele applicaties zit. Als je wist welke, zou het voldoende zijn om alleen die handmatig uit te schakelen!
De praktijk is dus dat Facebook draait als dat nodig is en Skype alleen als dat nodig is.
Aan de andere kant, als ik de batterij moet sparen en ik weet dat ik de iPhone zo lang mogelijk "in leven" moet houden, schakel ik ook alles uit wat niet nodig is bij multitasking, maar meestal heeft het geen grote impact. maar indien nodig beperk ik 3G, al het mobiele internet, WiFi, locatiediensten, vliegtuigmodus, lichtsterkte etc. Als onderdeel van de routine zet ik bij multitasking ook de bovengenoemde applicaties uit.
Dus persoonlijk denk ik dat het artikel waar is, helaas weerleggen sommige programmeurs deze dingen met hun applicaties, omdat hun applicaties onjuist zijn en naar mijn mening zijn hier maar twee oplossingen voor 1. Als het mogelijk is om de applicatie niet te gebruiken en een alternatief indien mogelijk, of 2. Als het niet mogelijk is, zie bijvoorbeeld Skype, schrijf het naar de betreffende programmeur in het rapport en hoop dat zij er iets aan zullen doen.
Het heeft misschien geen zin om apps handmatig uit te schakelen, maar ik doe het toch. Ik heb ook geprobeerd het applicatiesysteem niet uit te zetten, ze te laten draaien (of ze op de achtergrond te laten slapen) en de batterijduur was veel lager, ook was het nodig om de iPad 2 na ongeveer drie weken opnieuw op te starten, deze reageerde traag. Ik zet de apps dus handmatig uit, de batterij gaat langer mee, ik heb onlangs op eerste kerstdag opnieuw opgestart en hij werkt prima.
Trouwens, ik doe hetzelfde in Mac OS X, ik sluit gewoon de applicatie die ik niet nodig heb (CMD+Q), het is beter dan hem op de achtergrond te laten slapen en onnodig RAM-geheugen op te vreten (wat OS X wel kan doen). werkt niet zo goed). Ik heb weinig RAM, slechts 8 GB, maar met 7 GB in Windows 8 reageerde het systeem niet langzaam of wisselde het niet, in OS X is dit een vrij algemeen verschijnsel (ik heb de computer nooit uitgeschakeld, ik doe het ook met Mac, dus een maand of meer up-time is geen uitzondering, het probleem is dat ik soms uit voorzorg de Mac opnieuw moet opstarten om RAM vrij te maken en te "versnellen", Windows 7 heeft dit niet nodig).
Ik ben meer geïnteresseerd in hoe je de applicatie daadwerkelijk kunt vernietigen. Wat er met mij gebeurde, was dat de applicatie (met name op Geocaching) in een staat terechtkwam waarin het iets van de bovenliggende server aan het laden was, en in die staat bleef hangen. Home-knop werkte, na opnieuw opstarten ging het terug naar de bevroren toestand (waar ik was gebleven). Handmatig afsluiten (naar het multitasting-menu, houd het pictogram en de min ingedrukt om te sluiten) = de applicatie verdween, na opnieuw opstarten werd deze geopend in de oorspronkelijke staat waar deze vastliep. Dus sloot ik alles af, zette de telefoon uit, zette hem aan, dubbelklikte op HOME en zie, de applicaties waren er allemaal zoals ze waren voordat ze werden gesloten, net voordat ze werden uitgeschakeld. Het opnieuw opstarten hielp ook niet: houd home en upper vast totdat het warm wordt. Het enige dat hielp was het verwijderen van de applicatie van de telefoon, opnieuw opstarten en opnieuw installeren op de telefoon. Op de een of andere manier heb ik het niet aangenomen.
Dit multitasking-beheer werkt en het is aan de ontwikkelaars om met deze situaties om te gaan. Voor degenen die geïnteresseerd zijn in een meer gedetailleerde en professionele beschrijving van de hele situatie, zal ik hier schrijven hoe het zit.
De applicatie kan reageren op in totaal 6 toestanden en deze toestanden zijn:
toepassingWillResignActive
applicationDidEnterBackground
toepassingWillEnterForeground
toepassingDidBecomeActive
toepassingWillTerminate
toepassingDidReceiveMemoryWarning
Nu zal ik proberen deze toestanden in meer detail te beschrijven.
applicationWillResignActive – deze status betekent dat de applicatie in de toekomst (een kwestie van een paar milliseconden) zal aftreden als een actieve applicatie (dat wil zeggen de applicatie op de voorgrond). Dit gebeurt bijvoorbeeld bij het ontvangen van een oproep tijdens het gebruik van de applicatie, maar tegelijkertijd Deze methode wordt geactiveerd voordat de toepassing naar de achtergrond gaat, dus u moet rekening houden met deze wijzigingen. Deze methode is ook geschikt om bijvoorbeeld alle activiteiten die hij uitvoert op te schorten als er een oproep binnenkomt en te wachten tot het einde van het gesprek.
applicationDidEnterBackground - deze status geeft aan dat de applicatie naar de achtergrond is gegaan. Ontwikkelaars moeten deze methode gebruiken om alle processen op te schorten die niet noodzakelijkerwijs op de achtergrond hoeven te draaien en om het geheugen op te schonen van ongebruikte gegevens en andere processen, bijvoorbeeld verlopen timers, wissen van in het geheugen geladen afbeeldingen die niet noodzakelijkerwijs nodig zijn, of verbreken de verbinding met de servers als het niet van cruciaal belang is dat de toepassing de verbinding op de achtergrond voltooit. In principe moet deze methode, wanneer deze in de applicatie wordt aangeroepen, worden gebruikt om de applicatie volledig op te schorten als een deel ervan niet op de achtergrond hoeft te worden uitgevoerd.
applicationWillEnterForeground – deze staat is het tegenovergestelde van de eerste staat waarin de toepassing zich overgeeft aan de actieve status. Deze applicatiestatus betekent eenvoudigweg dat in de volgende paar milliseconden de slapende applicatie vanaf de achtergrond wordt hervat en op de voorgrond verschijnt (de applicatie komt op de voorgrond). Deze methode moet door ontwikkelaars worden gebruikt om alle processen te hervatten die inactief waren terwijl de applicatie was geopend. op de achtergrond moeten de verbindingen met servers worden hersteld, timers worden gereset, afbeeldingen en gegevens in het geheugen worden geladen, en andere noodzakelijke processen kunnen worden hervat net voordat de gebruiker de geladen applicatie weer ziet.
applicationDidBecomeActive – deze status geeft aan dat de applicatie zojuist actief is geworden nadat deze op de voorgrond is hersteld, dit is een methode die kan worden gebruikt om aanvullende aanpassingen aan de gebruikersinterface aan te brengen of de gebruikersinterface naar de oorspronkelijke staat te herstellen, enz. Deze methode gebeurt daadwerkelijk wanneer de gebruiker al op het display kan zien, dus het is noodzakelijk om op basis van de balans te bepalen wat er bij deze methode en bij de vorige methode gebeurt. Ze worden achter elkaar gebeld met een verschil van enkele milliseconden.
applicationWillTerminate - deze status treedt op enkele milliseconden voordat de toepassing wordt beëindigd, dat wil zeggen voordat de toepassing daadwerkelijk wordt beëindigd. Handmatig bij multitasking of bij het uitschakelen van het apparaat. Deze methode moet worden gebruikt om verwerkte gegevens op te slaan en alle activiteiten te beëindigen en gegevens te verwijderen die niet langer nodig zijn.
applicationDidReceiveMemoryWarning - en dit is een voorwaarde die hier veel wordt besproken. Indien nodig zal iOS de applicatie uit het geheugen verwijderen als deze onnodig systeembronnen gebruikt. Ik weet niet precies wat iOS doet met achtergrondapps, maar als het een app nodig heeft om bronnen vrij te geven voor andere processen, vraagt het iOS een geheugenwaarschuwing om de bronnen die het bevat vrij te geven. Deze methode wordt dus in de applicatie aangeroepen en de ontwikkelaars moeten deze zo implementeren dat de applicatie het geheugen opgeeft dat het heeft, de verwerkte gegevens opslaat en onnodige gegevens uit het geheugen verwijdert, en anderszins het geheugen op adequate wijze vrijmaakt. Het is waar dat veel ontwikkelaars, bijvoorbeeld beginners, niet over zulke dingen nadenken of ze niet begrijpen, en dan kan het gebeuren dat hun applicatie de levensduur van de batterij in gevaar brengt en/of zelfs op de achtergrond onnodig systeembronnen verbruikt. Ik weet niet hoe iOS zich zal gedragen als de applicatie niets doet na het ontvangen van een geheugenwaarschuwing en systeembronnen blijft verbruiken zoals voorheen.
Deze paar toestanden en bijbehorende methoden liggen ten grondslag aan de hele "multitasking" in iOS... het is een geweldig systeem als de ontwikkelaars de noodzaak niet negeren om verantwoordelijk te zijn voor wat de apps op de apparaten van hun gebruikers zullen overgeven als ze worden geminimaliseerd of ontvang waarschuwingen van het systeem en meer...
Ik hoop dat deze korte beschrijving je helpt te begrijpen hoe de applicatie ervoor zorgt dat alles soepel werkt. Het is dus bijna mogelijk om te zeggen dat het een fout is van onjuist gebruik door de gebruiker, wat kan worden opgevat als: als u in grote aantallen voornamelijk gratis applicaties van amateurontwikkelaars gebruikt, zal uw iOS-apparaat slechter werken dan wanneer u een groot aantal gebruikt. aantal gratis en betaalde applicaties van ervaren of professionele ontwikkelaars. Dit wil niet zeggen dat er in beide kringen geen uitzonderingen bestaan. Foursquare gedraagt zich bijvoorbeeld nogal vreemd en veeleisend, en tegelijkertijd zou je al verwachten dat het zeer bekwame ontwikkelaars zijn die veel tijd besteden aan geheugen- en batterijbeheer, maar het tegendeel is waar. Het grootste probleem met 4SQ is de communicatie met servers, die vaak vastloopt en overweldigd wordt. Dit is slechts een voorbeeld van het feit dat zelfs bekende applicaties problemen hebben, wat niets verandert aan het feit dat 4SQ een geweldige service is.
Veel plezier appels!! :)
We hebben de informatie aan het artikel toegevoegd met de vriendelijke toestemming van de auteur ;-)
Het spijt me, ENTER stond overal tussen de paragrafen, ze zouden er hier iets aan kunnen doen, zodat de commentaren op zijn minst een beetje RIJKE TEKSTFORMAAT hebben.
ArnieX: bedankt voor de reactie!!
Die Faramir: Ik heb het zojuist over je probleem, ik weet niet of het in jouw geval ook zal helpen, maar ik weet uit eigen ervaring dat als je de applicatie sluit (bij multitasking), het een paar seconden duurt voordat deze sluit, dus als je het uitzet, raad ik aan een paar seconden te wachten (ik wacht ongeveer 10 seconden voor de zekerheid) totdat het definitief klaar is en pas dan start ik het opnieuw.
Graag gedaan ;) Ik help je graag als ik de kans krijg om een bijdrage te leveren.
Hoe moet het met Meeb, als ik via hem inlog op ICQ of FB chat, logt hij na 10 minuten automatisch uit en ga ik offline of blijft hij werken? bedankt voor de verduidelijking :P
Na tien minuten wordt de verbinding van de applicatie met internet eenvoudigweg onderbroken. U bent echter nog steeds online op de Meeba-server en ontvangt een pushmelding als iemand u schrijft. Na het opnieuw openen van de applicatie is de verbinding binnen enkele ogenblikken tot stand gebracht en kunt u vrolijk verder chatten.
Dus als ik het door u gelinkte artikel goed heb begrepen, hebben de statistieken alleen betrekking op applicatiecrashes wanneer deze worden gestart, wat een vrij klein percentage is van de gevallen waarin crashes kunnen optreden. Daarom is het onmogelijk om uit dit "onderzoek" te concluderen dat iOS naar mijn mening minder stabiel is. Bovendien vergat de vertaler van het artikel uit Forbes te vermelden dat het bedrijf dat gegevens over applicatiecrashes levert, onder meer wordt ondersteund door Google ("Crittercism, that is backed by Google Ventures,...").