Advertentie sluiten

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.

.