Maak advertensie toe

Daar is steeds baie mense wat nie weet hoe multitasking in iOS werk nie. Om mee te begin, is dit egter nodig om daarop te wys dat dit nie werklike multitasking is nie, maar 'n baie slim oplossing wat nie die stelsel of die gebruiker belas nie.

Mens kan dikwels bygelowe hoor dat toepassings wat in die agtergrond in iOS loop, die bedryfsgeheue vul, wat lei tot stelsel verlangsaming en batterylewe, dus moet die gebruiker dit handmatig afskakel. Die multitasking-balk bevat nie eintlik 'n lys van alle lopende agtergrondprosesse nie, maar slegs die toepassings wat die meeste onlangs bekendgestel is. Die gebruiker hoef dus nie bekommerd te wees oor prosesse wat in die agtergrond loop nie, behalwe in enkele gevalle. Wanneer jy die Home-knoppie druk, gaan die toepassing gewoonlik aan die slaap of maak dit toe, sodat dit nie meer die verwerker of die battery laai nie en, indien nodig, die nodige geheue vrystel.

Dit is dus nie volwaardige multitasking wanneer jy dosyne prosesse loop nie. Slegs een toepassing loop altyd op die voorgrond, wat onderbreek of heeltemal afgeskakel word indien nodig. Slegs 'n paar sekondêre prosesse loop op die agtergrond. Dit is hoekom jy selde 'n toepassing-ongeluk op iOS sal teëkom, byvoorbeeld Android is oorweldig met lopende toepassings waarvoor die gebruiker moet sorg. Enersyds maak dit werk met die toestel onaangenaam, en andersyds veroorsaak dit byvoorbeeld stadige opstart en oorgange tussen toepassings.

Aansoek looptyd tipe

Die toepassing op jou iOS-toestel is in een van hierdie 5 toestande:

  • Hardloop: die toepassing word op die voorgrond begin en loop
  • Agtergrond: dit loop steeds maar loop op die agtergrond (ons kan ander toepassings gebruik)
  • Opgeskort: Gebruik steeds RAM maar loop nie
  • Onaktief: die toepassing loop maar indirekte opdragte (byvoorbeeld wanneer jy die toestel sluit terwyl die toepassing loop)
  • Nie hardloop nie: Die aansoek het beëindig of het nie begin nie

Die verwarring kom wanneer die toepassing op die agtergrond gaan om nie te steur nie. Wanneer jy die Tuis-knoppie druk of die gebaar gebruik om die toepassing (iPad) toe te maak, gaan die toepassing na die agtergrond. Die meeste toepassings word binne sekondes opgeskort (Hulle word in die iDevice se RAM gestoor sodat hulle vinnig begin kan word, hulle laai nie die verwerker soveel nie en bespaar dus batterylewe) Jy mag dalk dink dat as 'n toepassing aanhou om geheue te gebruik, jy het om dit handmatig uit te vee om dit vry te maak. Maar jy hoef dit nie te doen nie, want iOS sal dit vir jou doen. As jy 'n veeleisende toepassing op die agtergrond het, soos 'n speletjie wat 'n groot hoeveelheid RAM gebruik, sal iOS dit outomaties uit die geheue verwyder wanneer nodig, en jy kan dit herbegin deur die toepassingikoon te tik.

Nie een van hierdie toestande word in die multitasking-balk weerspieël nie, die paneel wys slegs 'n lys van programme wat onlangs bekendgestel is, ongeag of die toepassing gestop, onderbreek of op die agtergrond loop. Jy kan ook sien dat die toepassing wat tans loop nie in die Multitasking-paneel verskyn nie

Agtergrond take

Normaalweg, wanneer jy die Tuis-knoppie druk, sal die toepassing op die agtergrond loop, en as jy dit nie gebruik nie, sal dit outomaties binne vyf sekondes onderbreek. So as jy byvoorbeeld 'n poduitsending aflaai, evalueer die stelsel dit as 'n lopende toepassing en vertraag die beëindiging met tien minute. Op die laatste na tien minute word die proses uit die geheue vrygestel. Kortom, jy hoef nie bekommerd te wees oor die onderbreking van jou aflaai deur die Tuis-knoppie te druk as dit nie meer as 10 minute neem om dit te voltooi nie.

Onbepaalde loop in die agtergrond

In die geval van onaktiwiteit beëindig die stelsel die toepassing binne vyf sekondes, en in die geval van aflaaie word beëindiging vir tien minute vertraag. Daar is egter 'n klein aantal toepassings wat op die agtergrond moet loop. Hier is 'n paar voorbeelde van toepassings wat in iOS 5 onbepaald op die agtergrond kan loop:

  • Toepassings wat klank speel en vir 'n rukkie onderbreek moet word (onderbreek musiek tydens 'n telefoonoproep, ens.),
  • Toepassings wat jou ligging opspoor (navigasie sagteware),
  • Toepassings wat VoIP-oproepe ontvang, byvoorbeeld as jy Skype gebruik, kan jy 'n oproep ontvang selfs wanneer die toepassing in die agtergrond is,
  • Outomatiese aflaaie (bv. Kiosk).

Alle toepassings moet gesluit word as hulle nie meer 'n taak uitvoer nie (soos agtergrondaflaaie). Daar is egter uitsonderings wat voortdurend in die agtergrond loop, soos die inheemse Mail-toepassing. As hulle op die agtergrond werk, neem hulle geheue, SVE-gebruik op of verminder hulle batterylewe

Programme wat toegelaat word om onbepaald op die agtergrond te loop, kan enigiets doen wat hulle doen terwyl hulle aan die gang is, van musiek speel tot die aflaai van nuwe Podcast-episodes.

Soos ek voorheen genoem het, hoef die gebruiker nooit die toepassings wat op die agtergrond loop, toe te maak nie. Die enigste uitsondering hierop is wanneer 'n toepassing wat op die agtergrond loop, ineenstort of nie behoorlik uit die slaap wakker word nie. Die gebruiker kan dan die toepassings handmatig in die multitasking-balk toemaak, maar dit gebeur selde.

So, oor die algemeen, hoef jy nie agtergrondprosesse te bestuur nie, want die stelsel sal self daarvoor sorg. Dit is hoekom iOS so 'n vars en vinnige stelsel is.

Vanuit 'n ontwikkelaar se perspektief

Die toepassing kan reageer met 'n totaal van ses verskillende state as deel van multitasking:

1. applicationWillResignActive

In vertaling beteken hierdie toestand dat die aansoek as die aktiewe aansoek (dit wil sê die aansoek op die voorgrond) in die toekoms ('n kwessie van 'n paar millisekondes) sal bedank. Dit gebeur byvoorbeeld wanneer 'n oproep ontvang word terwyl die toepassing gebruik word, maar terselfdertyd veroorsaak hierdie metode ook hierdie toestand voordat die toepassing op die agtergrond gaan, dus moet u hierdie veranderinge in ag neem. Hierdie metode is ook geskik sodat dit byvoorbeeld al die aktiwiteite wat dit verrig wanneer daar 'n inkomende oproep is, opskort en wag tot die einde van die oproep.

2. applicationDidEnter Background

Die status dui aan dat die aansoek op die agtergrond gegaan het. Ontwikkelaars moet hierdie metode gebruik om alle prosesse op te skort wat nie noodwendig op die agtergrond hoef te loop nie en geheue van ongebruikte data en ander prosesse skoon te maak, soos tydtellers wat verval, gelaaide beelde uit die geheue verwyder wat nie noodwendig nodig sal wees nie, of toemaak verbindings met bedieners, tensy dit van kritieke belang is vir die toepassing om verbindings in die agtergrond te voltooi. Wanneer die metode in 'n toepassing opgeroep word, moet dit in wese gebruik word om die toepassing heeltemal op te skort as 'n deel daarvan nie in die agtergrond hoef te loop nie.

3. applicationWillEnterForeground

Hierdie toestand is die teenoorgestelde van die eerste staat, waar die aansoek na die aktiewe staat sal bedank. Die toestand beteken eenvoudig dat die slaaptoepassing vanaf die agtergrond sal hervat en binne die volgende paar millisekondes op die voorgrond sal verskyn. ontwikkelaars moet hierdie metode gebruik om enige prosesse te hervat wat onaktief was terwyl die toepassing in die agtergrond was. Verbindings met bedieners moet hervestig word, tydtellers moet teruggestel word, beelde en data in die geheue gelaai word, en ander nodige prosesse kan hervat word net voordat die gebruiker die gelaaide toepassing weer sien.

4. aansoekHetAktief geword

Die staat dui aan dat die toepassing pas aktief geword het nadat dit op die voorgrond herstel is. Dit is 'n metode wat gebruik kan word om bykomende aanpassings aan die gebruikerskoppelvlak te maak of om die UI na sy oorspronklike toestand te herstel, ens. Dit gebeur eintlik op die oomblik wanneer die gebruiker reeds die toepassing op die skerm sien, dus is dit nodig om bepaal met omsigtigheid wat in die metode van hierdie en in die vorige metode gebeur. Hulle word een na die ander genoem met 'n verskil van 'n paar millisekondes.

5. applicationWillTerminate

Hierdie toestand gebeur 'n paar millisekondes voor die toepassing verlaat, dit wil sê voordat die toepassing werklik beëindig word. Of handmatig vanaf multitasking of wanneer die toestel afgeskakel word. Die metode moet gebruik word om verwerkte data te stoor, om alle aktiwiteite te beëindig en om data uit te vee wat nie meer nodig sal wees nie.

6. applicationDidReceiveMemoryWarning

Dit is die laaste staat wat die meeste bespreek word. Dit is verantwoordelik om, indien nodig, die toepassing uit iOS-geheue te verwyder as dit stelselhulpbronne onnodig gebruik. Ek weet nie spesifiek wat iOS met agtergrondtoepassings doen nie, maar as dit 'n toepassing benodig om hulpbronne na ander prosesse vry te stel, vra dit dit met 'n geheuewaarskuwing om die hulpbronne vry te stel wat dit ook al het. So hierdie metode word in die aansoek genoem. Ontwikkelaars moet dit implementeer sodat die toepassing die geheue wat dit toegewys het prysgee, alles wat aan die gang is, stoor, onnodige data uit die geheue vee en andersins geheue voldoende bevry. Dit is waar dat baie ontwikkelaars, selfs beginners, nie aan sulke dinge dink of verstaan ​​nie, en dan kan dit gebeur dat hul toepassing batterylewe bedreig en/of stelselhulpbronne onnodig verbruik, selfs in die agtergrond.

Uitspraak

Hierdie ses state en hul verwante metodes is die agtergrond van alle "multitasking" in iOS. dit is 'n wonderlike stelsel, solank ontwikkelaars nie die feit ignoreer dat daar 'n behoefte is om verantwoordelik te wees oor wat die toepassing op hul gebruikers se toestelle uitstuur nie, as hulle geminimaliseer word of waarskuwings van die stelsel af kry, ensovoorts.

bron: Macworld.com

Skrywers: Jakub Požárek, Martin Doubek (ArnieX)

 
Het jy ook 'n probleem om op te los? Benodig jy raad of vind jy dalk die regte toepassing? Moenie huiwer om ons te kontak via die vorm in die afdeling nie Berading, volgende keer sal ons jou vraag beantwoord.

.