We kennen allemaal de les "multitasking = het vermogen om meerdere processen tegelijkertijd uit te voeren". We gebruiken het op onze computers zonder ons bijzonder bewust te zijn van de aanwezigheid ervan. Het schakelen tussen applicaties of vensters van één applicatie gebeurt (bij ons) in real time en deze mogelijkheid van het besturingssysteem beschouwen wij als vanzelfsprekend.
Taak anders
Het besturingssysteem wijst de processor in kleine tijdsintervallen aan alle applicaties toe. Deze tijdsperioden zijn zo kort dat we ze niet kunnen opmerken, waardoor het lijkt alsof alle applicaties tegelijkertijd de processor gebruiken. Dat denken wij misschien multitasken in iOS 4 werkt precies hetzelfde. Het is niet zo. De belangrijkste reden is uiteraard de batterijcapaciteit. Als alle applicaties echt op de achtergrond zouden blijven draaien, zouden we waarschijnlijk binnen een paar uur op zoek moeten naar een socket.
De meeste applicaties die compatibel zijn met iOS 4 worden in de "opgeschorte modus" gezet of in de sluimerstand gezet nadat op de Home-knop is gedrukt. Een analogie zou kunnen zijn het sluiten van de klep van een laptop, die onmiddellijk in de slaapstand gaat. Na het openen van de klep wordt de laptop wakker en bevindt alles zich in precies dezelfde staat als voordat de klep werd gesloten. Verder zijn er toepassingen waarbij het indrukken van de Home-knop ervoor zorgt dat ze worden beëindigd. En daarmee bedoelen we een echte beëindiging. Ontwikkelaars kunnen kiezen welke van deze methoden ze willen gebruiken.
Maar er is nog een andere categorie toepassingen. Dit zijn de apps die echt op de achtergrond draaien, ook al doe je iets heel anders op je iDevice. Skype is een goed voorbeeld omdat het een constante internetverbinding nodig heeft. Andere voorbeelden zijn applicaties die achtergrondmuziek afspelen (Pandora) of applicaties die constant gebruik van GPS vereisen. Ja, deze apps trekken je batterij leeg, zelfs als ze op de achtergrond draaien.
Slapen of neerschieten?
Bepaalde applicaties die compatibel zijn met iOS 4 en die in de sluimerstand moeten worden gezet (in de "opgeschorte modus") nadat u op de Home-knop hebt gedrukt, blijven op de achtergrond draaien. Apple gaf ontwikkelaars precies tien minuten de tijd om de app zijn taak te laten voltooien, wat deze ook was. Stel dat u een bestand downloadt in GoodReader. Opeens wil iemand je bellen en hoef je alleen maar dat belangrijke telefoontje aan te nemen. Het gesprek duurde niet langer dan tien minuten, u keert terug naar de GoodReader-applicatie. Het bestand is mogelijk al gedownload of wordt nog gedownload. Wat als het gesprek langer dan tien minuten duurt? De applicatie, in ons geval GoodReader, zal zijn activiteit moeten stopzetten en iOS moeten vertellen dat deze in de sluimerstand kan worden gezet. Als ze dat niet doet, wordt ze genadeloos beëindigd door iOS zelf.
Nu kent u het verschil tussen "mobiele" en "desktop" multitasking. Hoewel de soepelheid en de snelheid van het schakelen tussen applicaties belangrijk zijn voor een computer, is de levensduur van de batterij altijd het allerbelangrijkste voor mobiele apparaten. Ook multitasken moest hierop worden aangepast. Als u na het lezen van dit artikel twee keer op de Home-knop drukt, ziet u daarom niet langer de "balk met applicaties die op de achtergrond draaien", maar in wezen alleen de "lijst met recent gebruikte applicaties".
Auteur: Daniel HruškaBron: onemoretap.com
hmm, interessant :) Ik dacht altijd dat het altijd vergelijkbaar was met hoe het op Unix gedaan kan worden. Dat de applicatie nul CPU-tijd heeft gekregen en dat het proces alleen maar in het geheugen zit, alle bronnen zijn toegewezen. dus ik moest twee keer op home drukken en de applicatie onmiddellijk stoppen om deze te verwijderen. Betekent dit dat zelfs als er een applicatiepictogram in het onderste verborgen blad staat, de app nog steeds lang geleden (na 10 minuten) is gesloten?
In de onderste lijst staan eenvoudigweg de meest recent geopende applicaties, waarbij sommige nog steeds kunnen worden uitgevoerd, andere zijn opgeschort en sommige volledig zijn beëindigd. Het handmatig verwijderen van de applicatie uit de lijst heeft als "neveneffect" dat als deze actief is (of wordt opgeschort), deze wordt beëindigd.
De applicatie moet zichzelf vertellen over die 10 extra minuten, en het is niet gegarandeerd dat deze deze krijgt.
Nou, dat heeft mijn obsessie met het sluiten van de applicatie uit de lijst niet weggenomen (wat als het per ongeluk bronnen opslokt, toch? :-D)
Ik heb begrepen dat de 10 minuten bedoeld zijn voor apps die op de achtergrond moeten werken en niet in de categorie "skype, GPS en muziek afspelen" vallen. Andere toepassingen schakelen over naar de onderbroken modus en blijven in het geheugen totdat het geheugen voor andere zaken nodig is.
De opgeschorte modus heeft het voordeel dat als u de app moet beëindigen, u de gegevens niet verliest; alles wordt opgeslagen op het moment dat u naar de opgeschorte modus overschakelt.
of, in het geval van bijvoorbeeld afspelen, het equivalent van het commando bg / fg
En hoe zit het met de speler of andere applicaties die gedurende langere tijd op de achtergrond draaien? Ik bedoel, mag ik als ontwikkelaar "kiezen", of moet dit op de een of andere manier door Apple worden goedgekeurd?
Om de applicatie echt voor onbepaalde tijd op de achtergrond te laten draaien, moet deze een van de volgende acties uitvoeren (registreren):
– Gebruik locatiediensten (GPS)
– Speel muziek op de achtergrond
– Gebruik VOIP (Voice over IP)
Gezien de titel (een kijkje onder de motorkap) had ik verwacht dat het artikel een wat uitgebreidere uitleg met technische details zou bevatten. Dit lijkt meer op een perex voor het artikel. Als het perex is, wanneer komt dan het vervolg? Kunt u een terugbetaling krijgen? :-)
en wat zou je graag meer willen weten?
Van een artikel met "onder de motorkap" in de titel zou ik een gedetailleerde technische beschrijving verwachten (de auteur zou bijvoorbeeld de overhead kunnen analyseren bij het wisselen van applicatie, of hoe gelijktijdige toegang tot systeembronnen wordt afgehandeld), een vergelijking met andere modellen (bijvoorbeeld met een gejailbreakte iPhone). Het is ideaal om dit te ondersteunen met enkele metingen. Ik verwachtte simpelweg veel meer van een artikel met "onder de motorkap" in de titel dan deze zeer oppervlakkige beschrijving.
Is er een icq-client die continu op de achtergrond draait, zoals Skype, en de verbinding niet verbreekt?
de applicatie heeft 10 seconden om in de slaapstand te gaan, niet 10 minuten... en tijdens dit proces kunnen sommige onderdelen wel of niet "hangen" op backend-services, waarvan sommige hierboven al zijn vermeld - dat is wat Apple "slim" noemt "multitasken.... Toen schoot het systeem haar neer
De aanvraag kan extra tijd nodig hebben als er iets wordt gedownload, geüpload of verwerkt. Het heeft niets te maken met GPS, VoIP of het afspelen van muziek, die voor onbeperkte tijd in de minimalistische modus draaien.