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.
Hallo, baie oulike artikel, maar ek wonder of jy enige tegniese ondersteuning daarvoor het. Want ek het die battery al 'n paar keer opgelos in die aand voor ek gaan slaap en dit het gebeur dat met wifi en mobiele data afgeskakel, dit meer gevat het as in 'n ander geval met wifi afgeskakel en net 3G.
Ongelukkig is die ervaring dat in iOS toepassings met die hand afgeskakel moet word, en die stelsel werk nie meer so goed soos voorheen nie.
Ek het my iPhone vervang met 'n Windows Phone (Samsung Omnia W vir 6200,-) en die spoed van die stelsel is op 'n heel ander vlak.
Ek is bevrees dat wanneer die Windows 8 Metro-tablette uitkom, ek ook die iPad sal vervang...
@007 – ja, as jy die ou iPhone3G's met die nuwe WP's vergelyk, dan ja (wie sou dit verwag het?) sal die WP nogal vinniger wees. Andersins gaan die skinderpraatjies oor Karlulka jou nie goed nie en was dit gepas om die huidige HW te vergelyk. Ek het ook WP7 gekoop en uiteindelik met 4'e geëindig, wat 'n heeltemal ander vlak van bruikbaarheid as WP7 verteenwoordig. Gaan dus aangenaam en blaai eindeloos deur die teëls.
Ek stem heeltemal saam met Paja
Ek sal weer bydra uit die puin van 'n ander vat - Samsung Galaxy S en iPhone 4 - ek sou sê vergelykbaar in terme van ouderdom? Ten tyde van iOS 4, en wat bruikbaarheid en spoed iewers anders as Android betref, het Apple die konsep van werk met toepassings baie goed opgelos, maar dieselfde is nie meer waar met Android nie. Op die ou end het ek in elk geval met die 4S beland en ek het geen klagtes nie, want "dit werk net" .. en dit werk baie vinnig!
Die teorie is pragtig... Maar in die praktyk sluit ek steeds die toepassing in die kroeg ;)
Dankie, baie interessant, pragmaties, interessant, dit kort nie swaai en diepte nie. Onderstreep die obsessie van vandag se jeug met hierdie verbode handelsmerk aansienlik! Maar dankie vir haar, sowel as vir hierdie artikel.
Die artikel is heeltemal verkeerd.
Die toepassing stop nie wanneer die Tuis-knoppie gedruk word nie, soos foutiewelik gesê, maar pouses. D.w.s. moet beslis nie uit die geheue uitvee nie en moenie ophou nie. Onderbreek net die hardloop, iOS sal hierdie toepassing 0% CPU-tyd gee. Dit "ruil" beslis nêrens in die iDevice-geheue nie, soos in die artikel gesê word. Dit is regtig te danke aan die feit dat dit moontlik is om die toepassingsskakeling te gebruik.
Die toepassing word uit die geheue verwyder wanneer die foon min geheue het om ander toepassings met 'n hoër prioriteit te laat loop (gewoonlik loop 'n ander toepassing op die voorgrond).
In die eerste geval is jy reg, dit was 'n vertaalfout. Wat omruiling betref, ons praat nie hieroor nie, ons praat van die bedryfsgeheue, nie die stoorplek in die iOS-toestel nie.
die beeld van die toepassing word vir 'n beperkte tyd in die geheue gestoor totdat dit weer deur 'n opdrag opgeroep word (sien 13,7 GB uit 16 GB: die 2,3 GB is gereserveer vir die stelsel en opgeskorte toepassings)
Dit is dus nodig om te onderskei tussen toepassings soos Navigasie, Skype en dies meer, hierdie toepassings bly aktief selfs in die agtergrond, of 'n sekere funksie eindig nie en gaan voort om byvoorbeeld data oor sy ligging of ligginginligting te stuur. Of soos Vokul in pord-modus luister en multitasking luister steeds in die agtergrond.
Hierdie toepassings dreineer die battery en dit is nodig om dit handmatig toe te maak en nie vir iOS te wag nie. met ander is dit nie nodig nie, daar is slegs as die toepassing ineenstort.
Ek kan nie met die artikel saamstem nie. Min. op 'n 1ste generasie iPad (iOS 5.0.1) is dit duidelik om te sien of ek baie "oop" toepassings in die multitaakbalk het of net 'n paar. iOS probeer wel om die geheue skoon te maak, maar dit is natuurlik nie genoeg nie – die klein grootte van die RAM is waarskynlik sy grootste swakheid.
so baie hang af van die stelsel en die hardeware wat gebruik word, dit is nogal logies dat dit erger sal wees op 'n iPad 1 met iOS 5.0.1 as wanneer dit op 'n 2de generasie iPad was
Jammer maat, hierdie is 'n beskrywing van die IDEALE manier waarop dit moet werk. Ongelukkig is die werklikheid heeltemal anders en jy sal dit weet as jy Apple-produkte gebruik, ten minste soveel soos ek (maw af en toe).
"Jy kan dikwels bygelowe hoor dat programme wat in die agtergrond in iOS loop, die bedryfsgeheue vul,"
Dit is nie 'n bygeloof nie, dit is net 'n feit. Jy beweer dit immers self in die artikel.
"Soos ek voorheen genoem het, hoef die gebruiker nooit die toepassings wat op die agtergrond loop, toe te maak nie."
ONSENSE. Dis net snert, appelpropaganda, moenie kwaad word vir my nie.
“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 toepassingsikoon te tik.
Nie waar nie. Die situasie is 'n bietjie anders. 'n Tipiese voorbeeld - ek het veeleisende toepassings wat in die agtergrond loop, ek het speletjies nodig. Ek begin die blaaier, maak 'n paar oortjies oop -> benodig meer geheue. Wat sal gebeur? Ek hou aan om toepassings op die agtergrond te eis, inteendeel, DIE Blaaier VAL SELF. As ek die veeleisende toepassings met die hand toemaak, werk die blaaier lank sonder enige probleme.
Dit is praktyk, nie teorie nie. En ek is verbaas dat, as 'n langtermyngebruiker van 'n Apple-produk, jy dit steeds nie weet nie.
Dankie, dit is baie goed beskryf en goed verduidelik. Jy het my nogal gehelp ;-) ♥
Net vir 'n inleiding, ek is nie vir of teen iOS nie, net soos met Android, maar daar is 'n paar vreemde dinge hier, as soos hier geskryf staan: "jy kom selde teë met 'n programongeluk met iOS", dan met Android, toepassings crash waarskynlik een keer per jaar: -P
http://dotekomanie.blog.mobilmania.cz/2012/02/stabilita-ios-vs-android/
Ja, maar die gevalle wanneer jy die toepassing met die hand moet toemaak, is regtig minimaal, ek het dit omtrent een keer gebruik? ;-) en om 'n skakel te gee na die vergelykende toets van Mobilemania is nogal sinneloos, as ek wil lees van die advertensie wat Google betaal het, gaan kyk ek daar ;-) almal kan enige android foon in die hande kry en dit sal nie skoon loop nie, dit wil sê, met die uitsondering van die Galaxy Nexus, wat die stelsel is min of meer pasgemaak. In die algemeen is Android 'n ramp
@Mek – Ek gebruik Apple-produkte daagliks vir etlike jare en dit het nog nooit met my gebeur nie, so jou teorie werk op een of ander manier nie.
ONKRUID:
@redakce – Jy kan sien dat daar voortdurend aan die webwerf gewerk word of iets daarmee gebeur, maar ek het die gevoel dat dit nie 'n week neem vir alles om te werk soos dit moet nie. En ek kom nie eintlik meer hier nie, want die nuwe voorkoms pas my nie. Ek het darem die mobiele weergawe op die iPhone gebruik, maar nou werk dit glad nie – hoekom? Hulle reageer tans nie op plasings in die kommentaar nie.
@SteveJSF Ongelukkig loop dinge nie altyd uit soos ons dit wil hê nie. Wat die antwoorde betref, die nuwe SEO-inprop het hulle gebreek, dit word tans opgelos.
WP-Touch het ook om een of ander rede ons diens beëindig, so ons het besluit om met 'n beter oplossing as hierdie inprop vorendag te kom. So jy kan binnekort uitsien na die volgende nuus :-)
Lekker artikel. Wat die praktyk betref, wil ek sê dat ek met verskeie dinge saamstem en meeste van die tyd werk dit soos gesê, maar daar is ongelukkig steeds swak geskrewe aansoeke wat nie reg optree nie en dan is daar gevalle soos die een wat opgemerk is deur sommige lesers. Ek dink dat Skype 'n baie goeie voorbeeld is, ek weet uit die praktyk dat dit steeds in die agtergrond loop (en dit is goed en dit is hoe dit moet wees) maar die probleem is dat hierdie toepassing die battery van die toestel baie leegmaak en ek kan dit nie meer behoorlik sien nie . Omgekeerd, toepassings soos Facebook, Badoo, ens. hulle loop ook nog in die agtergrond, maar hul verbruik is amper onmerkbaar (ek merk darem niks op nie). So ek dink die fout is in die individuele toepassings. As dit bekend was watter, sou dit genoeg wees om net hulle handmatig af te skakel!
Die praktyk is dus dat Facebook werk soos nodig en Skype net wanneer dit nodig is.
Wel, aan die ander kant, as ek battery moet spaar en ek weet ek moet die iPhone so lank as moontlik "lewendig" hou, skakel ek ook alles af wat onnodig is in multitasking, maar meestal het dit nie 'n groot impak nie, maar indien nodig beperk ek 3G, alle mobiele internet, WiFi, liggingdienste, vliegtuigmodus, beligtingssterkte, ens. As deel van die roetine skakel ek ook die bogenoemde toepassings in multitasking af.
So persoonlik dink ek dat die artikel waar is, ongelukkig weerlê sommige programmeerders hierdie dinge met hul toepassings, want hul toepassings is verkeerd en na my mening is daar net twee oplossings hiervoor 1. As dit moontlik is om nie die toepassing te gebruik nie en vind 'n alternatief indien moontlik, of 2. Indien dit nie moontlik is nie, sien bv Skype, skryf dit aan die gegewe programmeerder in die verslag en hoop dat hulle iets daaraan sal doen.
Dit kan sinloos wees om toepassings handmatig te deaktiveer, maar ek doen dit in elk geval. Ek het ook probeer om nie die toepassingstelsel af te skakel nie, hulle te laat loop (of hulle op die agtergrond aan die slaap te laat) en die batterylewe was baie laer, dit was ook nodig om die iPad 2 na so drie weke te herbegin, dit het stadig gereageer. So ek skakel die toepassings met die hand af, die battery hou langer, ek het onlangs op Kersdag herlaai en dit werk goed.
Terloops, ek doen dieselfde ding in Mac OS X, ek maak net die toepassing toe wat ek nie nodig het nie (CMD+Q), dit is beter as om dit op die agtergrond te laat slaap en RAM onnodig op te eet (wat OS X kan' t werk met baie goed). Ek het min RAM, net 8 GB, maar in Windows 7 met 8 GB het die stelsel nie stadig gereageer of omgeruil nie, in OS X is dit 'n redelik algemene verskynsel (ek het nooit die rekenaar afgeskakel nie, ek doen dit ook met Mac, so 'n maand en meer optyd is nie 'n uitsondering nie, die probleem is dat ek soms die Mac moet herbegin as 'n voorsorgmaatreël om RAM vry te maak en te "bespoedig", Windows 7 het dit nie nodig nie).
Ek stel meer belang in hoe om die toepassing werklik te ontploffing. Wat met my gebeur het, was dat die toepassing (spesifiek op Geocaching) in 'n toestand gekom het waar dit iets van die ouerbediener af laai en in daardie toestand vasgehaak het. Tuisknoppie het gewerk, na herlaai het dit teruggegaan na gevriesde toestand (waar ek opgehou het). Handmatige uitgang (na die multiproe-kieslys, hou die ikoon en minus om toe te maak) = die toepassing het verdwyn, nadat dit herbegin is, het dit in sy oorspronklike toestand oopgemaak waar dit gevries het. So ek het alles toegemaak, die foon afgeskakel, dit aangeskakel, HOME dubbelklik en siedaar – die toepassings was almal daar soos dit was voordat hulle toegemaak is net voor dit afgeskakel is. Die herbegin het ook nie gehelp nie – hou huis en bo totdat dit warm word. Die enigste ding wat gehelp het, was om die toepassing van die foon af te verwyder, dit weer te begin en dit weer op die foon te installeer. Op een of ander manier het ek dit nie gevat nie.
Hierdie Multitasking-bestuur werk en dit is aan die ontwikkelaars om hierdie situasies te hanteer. Vir diegene wat belangstel in 'n meer gedetailleerde en professionele beskrywing van die hele situasie, sal ek hier skryf hoe dit is.
Die aansoek kan op 'n totaal van 6 state reageer en hierdie state is:
applicationWillResignActive
applicationDidEnterBackground
applicationWillEnterForeground
aansoekHet aktief geword
applicationWillTerminate
applicationHet ReceiveMemoryWarning
Nou sal ek probeer om hierdie toestande in meer besonderhede te beskryf.
applicationWillResignActive – hierdie toestand beteken dat die toepassing in die toekoms ('n kwessie van 'n paar millisekondes) sal bedank as die aktiewe toepassing (d.i. die voorgrondtoepassing) dit gebeur byvoorbeeld wanneer 'n oproep ontvang word terwyl die toepassing gebruik word, maar terselfdertyd hierdie metode daarom sal hierdie toestand aktiveer selfs voordat die toepassing op die agtergrond gaan, so jy moet 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.
applicationDidEnterBackground - hierdie status dui aan dat die toepassing die agtergrond betree het, ontwikkelaars moet hierdie metode gebruik om alle prosesse op te skort wat nie noodwendig in die agtergrond hoef te loop nie en die geheue van ongebruikte data en ander prosesse skoon te maak, byvoorbeeld vervaltydtellers, duidelik van geheue gelaaide beelde wat nie noodwendig nodig sal wees nie of beëindig die verbinding met die bedieners as dit nie krities is vir die toepassing om die verbinding in die agtergrond te voltooi nie. Basies moet hierdie metode, wanneer die toepassing ingeroep word, gebruik word om die toepassing heeltemal op te skort as 'n deel daarvan nie op die agtergrond hoef te loop nie.
applicationWillEnterForeground – hierdie toestand is die teenoorgestelde van die eerste toestand wanneer die aansoek na die aktiewe toestand sal bedank. Hierdie toepassingstatus beteken eenvoudig dat die slapende toepassing binne die volgende paar millisekondes vanaf die agtergrond sal hervat en op die voorgrond sal verskyn (die toepassing kom op die voorgrond), hierdie metode moet deur ontwikkelaars gebruik word om enige prosesse te hervat wat onaktief was terwyl die toepassing was in die agtergrond moet verbindings met bedieners hervestig word, tydtellers 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.
applicationDidBecomeActive – hierdie status 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 die UI na sy oorspronklike toestand te herstel, ens. Hierdie metode gebeur eintlik wanneer die gebruiker reeds op die skerm kan sien, dus is dit nodig om uit die balansstaat te bepaal wat in hierdie metode en in die vorige metode gebeur. Hulle word een na die ander genoem met 'n verskil van 'n paar millisekondes.
applicationWillTerminate - hierdie toestand gebeur 'n paar millisekondes voordat die toepassing beëindig word, dit wil sê voordat die toepassing werklik beëindig word. Of handmatig vanaf multitasking of wanneer die toestel afgeskakel word. Hierdie metode moet gebruik word om verwerkte data te stoor en om alle aktiwiteite te beëindig en data uit te vee wat nie meer nodig sal wees nie.
applicationDidReceiveMemoryWarning - en dit is 'n toestand wat baie hier bespreek word, indien nodig, sal iOS die toepassing uit die geheue verwyder as dit stelselhulpbronne onnodig gebruik. Ek weet nie presies wat iOS met agtergrondtoepassings doen nie, maar as dit 'n toepassing nodig het om hulpbronne na ander prosesse vry te stel, vra dit dit met 'n geheuewaarskuwing om die hulpbronne wat dit bevat, vry te stel. Hierdie metode word dus in die toepassing aangeroep, en die ontwikkelaars moet dit implementeer sodat die toepassing die geheue wat dit het opgee, die verwerkte stoor en onnodige data uit die geheue uitvee, en andersins die geheue voldoende bevry. Dit is waar dat baie ontwikkelaars, byvoorbeeld beginners, nie oor sulke dinge dink nie of dit nie verstaan nie, en dan kan dit gebeur dat hul toepassing batterylewe in gevaar stel en/of stelselhulpbronne onnodig verbruik selfs in die agtergrond. Ek weet nie hoe iOS sal optree as die toepassing niks doen nadat hy 'n geheuewaarskuwing ontvang het nie en voortgaan om stelselhulpbronne soos voorheen te verbruik.
Hierdie paar state en geassosieerde metodes is agter die hele "multitasking" in iOS ... dit is 'n wonderlike stelsel as die ontwikkelaars nie die behoefte ignoreer om verantwoordelik te wees oor wat die toepassings op hul gebruikers se toestelle sal oplewer as hulle geminimaliseer word nie of kry waarskuwings van die stelsel en meer ...
Ek hoop dat hierdie kort beskrywing jou help om te verstaan hoe die toepassing betrokke is om alles glad te laat werk. Dit is dus amper moontlik om te sê dat dit 'n fout is van verkeerde gebruik deur die gebruiker, wat verstaan kan word as - as jy meestal gratis toepassings van amateur-ontwikkelaars in groot getalle gebruik, sal jou iOS-toestel slegter werk as wanneer jy 'n groot aantal gratis en betaalde toepassings van ervare of professionele ontwikkelaars. Dit is nie te sê dat daar geen uitsonderings in beide kringe is nie. Foursquare tree byvoorbeeld nogal vreemd en veeleisend op, en terselfdertyd sou 'n mens verwag dat hulle baie vaardige ontwikkelaars is wat baie tyd aan geheue- en batterybestuur gee, maar die teenoorgestelde is waar. Die grootste probleem met 4SQ is kommunikasie met bedieners, wat dikwels hang en oorweldig word. Dit is net 'n voorbeeld van die feit dat selfs bekende toepassings probleme het, wat nie die feit verander dat 4SQ 'n wonderlike diens is nie.
Geniet dit Appels!! :)
Ons het die inligting by die artikel gevoeg met die vriendelike toestemming van die skrywer ;-)
Ek is jammer, ENTER was oral tussen paragrawe, hulle kon hier iets daaraan doen sodat die kommentare darem 'n bietjie RYKTEKSFORMATERING het.
ArnieX: dankie vir die kommentaar!!
Daai Faramir: Ek net oor jou probleem, ek weet nie of dit in jou geval sal help nie, maar ek weet uit eie ervaring dat as jy die toepassing toemaak (in multitasking) dit 'n paar sekondes neem totdat dit toemaak, so as jy skakel dit af Ek beveel aan om 'n paar sekondes te wag (ek wag ongeveer 10 sekondes om seker te wees) totdat dit definitief klaar is en eers dan begin ek dit weer.
Jy is welkom ;) Ek help graag as ek die geleentheid het om by te dra.
Hoe is dit veronderstel om met Meeb te wees, wanneer ek by ICQ aanmeld of FB chat daardeur, meld dit outomaties af na 10 minute en ek gaan vanlyn af of gaan dit voort om te werk? dankie vir die verduideliking :P
Na tien minute word die toepassing se verbinding met die internet eenvoudig onderbreek. Jy sal egter steeds aanlyn op die Meeba-bediener wees en jy sal 'n stootkennisgewing ontvang as iemand aan jou skryf. Nadat u die toepassing heropen het, sal die verbinding binne 'n oomblik tot stand gebring word en u kan gelukkig voortgaan om te gesels.
Dus, as ek die artikel wat jy geskakel het reg verstaan het, verwys die statistieke slegs na toepassing-ongelukke wanneer hulle begin, wat 'n redelike klein persentasie van gevalle is waar 'n ongeluk kan voorkom. Daarom is dit onmoontlik om uit hierdie "navorsing" af te lei dat iOS na my mening minder stabiel is. Verder het die vertaler van die artikel wat uit Forbes geneem is, vergeet om te noem dat die maatskappy wat data oor toepassing-ongelukke verskaf, onder andere deur Google ondersteun word ("Crittercism, wat deur Google Ventures gerugsteun word,...").