Endiselt on palju inimesi, kes ei tea, kuidas iOS-is multitegumtöötlus töötab. Alustuseks tuleb aga välja tuua, et tegemist pole päris multitegumtööga, vaid väga nutika lahendusega, mis ei koorma ei süsteemi ega kasutajat.
Sageli võib kuulda ebausku, et iOS-is taustal töötavad rakendused täidavad töömälu, mis toob kaasa süsteemi aeglustumise ja aku tööea, mistõttu peaks kasutaja need käsitsi välja lülitama. Multitegumtöötlusriba ei sisalda tegelikult kõigi töötavate taustaprotsesside loendit, vaid ainult viimati käivitatud rakendusi. Nii et kasutaja ei pea muretsema taustal töötavate protsesside pärast, välja arvatud mõnel juhul. Kodunupule vajutades läheb rakendus tavaliselt magama või sulgub, nii et ei laadi enam protsessorit ega akut ning vajadusel vabastab vajalikku mälu.
Nii et see ei ole täisväärtuslik multitegumtöö, kui teil on töös kümneid protsesse. Esiplaanil töötab alati ainult üks rakendus, mis vajadusel peatatakse või täielikult välja lülitatakse. Vaid mõned sekundaarsed protsessid töötavad taustal. Seetõttu kohtab iOS-is harva rakenduste krahhi, näiteks Android on töötavate rakendustega üle koormatud, mille eest peab kasutaja ise hoolitsema. Ühelt poolt muudab see seadmega töötamise ebameeldivaks, teisalt aga põhjustab näiteks aeglase käivitamise ja üleminekute rakenduste vahel.
Rakenduse käitusaja tüüp
Teie iOS-i seadme rakendus on ühes järgmisest viiest olekust:
- Jooksmine: rakendus käivitub ja töötab esiplaanil
- Taust: see töötab endiselt, kuid töötab taustal (saame kasutada muid rakendusi)
- Peatatud: Kasutab endiselt RAM-i, kuid ei tööta
- Mitteaktiivne: rakendus töötab, kuid kaudsed käsud (näiteks kui lukustate seadme, kui rakendus töötab)
- Ei tööta: Rakendus on lõppenud või ei ole veel käivitunud
Segadus tekib siis, kui rakendus läheb taustale, et mitte häirida. Kui vajutate avalehe nuppu või kasutate rakenduse (iPadi) sulgemiseks liigutust, lülitub rakendus taustale. Enamik rakendusi peatatakse mõne sekundi jooksul (need salvestatakse iDevice'i RAM-i, nii et neid saab kiiresti käivitada, nad ei koorma protsessorit nii palju ja säästavad seega aku kasutusaega) Võib arvata, et kui rakendus jätkab mälu kasutamist, on teil selle vabastamiseks käsitsi kustutamiseks . Kuid te ei pea seda tegema, sest iOS teeb seda teie eest. Kui teil on taustal peatatud mõni nõudlik rakendus, näiteks mäng, mis kasutab palju RAM-i, eemaldab iOS selle vajaduse korral automaatselt mälust ja saate selle taaskäivitada, puudutades rakenduse ikooni.
Ükski neist olekutest ei kajastu multitegumtöö ribal, paneel näitab ainult hiljuti käivitatud rakenduste loendit, olenemata sellest, kas rakendus on peatatud, peatatud või töötab taustal. Samuti võite märgata, et praegu töötavat rakendust ei kuvata paneelil Multitegumtöötlus
Taustaülesanded
Tavaliselt töötab kodunupu vajutamisel rakendus taustal ja kui te seda ei kasuta, peatub see automaatselt viie sekundi jooksul. Nii et kui laadite alla näiteks taskuhäälingusaadet, hindab süsteem seda töötava rakendusena ja lükkab lõpetamise kümme minutit edasi. Hiljemalt kümne minuti pärast vabastatakse protsess mälust. Lühidalt, te ei pea muretsema allalaadimise katkestamise pärast, kui vajutate nuppu Kodu, kui allalaadimine ei kesta rohkem kui 10 minutit.
Taustal töötamine määramata ajaks
Mitteaktiivsuse korral lõpetab süsteem rakenduse viie sekundi jooksul ning allalaadimiste puhul viibib lõpetamine kümme minutit. Siiski on väike hulk rakendusi, mis nõuavad taustal töötamist. Siin on mõned näited rakendustest, mis võivad iOS 5 taustal lõputult töötada.
- Rakendused, mis esitavad heli ja mida tuleb mõneks ajaks katkestada (muusika peatamine telefonikõne ajal jne),
- Rakendused, mis jälgivad teie asukohta (navigatsioonitarkvara),
- VoIP-kõnesid vastuvõtvad rakendused, näiteks kui kasutate Skype'i, saate kõnesid vastu võtta isegi siis, kui rakendus töötab taustal,
- Automaatsed allalaadimised (nt Kiosk).
Kõik rakendused tuleks sulgeda, kui nad enam mingit ülesannet ei täida (nt taustal allalaadimine). Siiski on erandeid, mis töötavad pidevalt taustal, näiteks omarakendus Mail. Kui need töötavad taustal, võtavad nad mälu, protsessori kasutust või lühendavad aku kasutusaega
Rakendused, millel on lubatud taustal lõputult töötada, saavad teha kõike, mida nad töötavad, alates muusika esitamisest kuni uute Podcasti jagude allalaadimiseni.
Nagu ma varem mainisin, ei pea kasutaja taustal töötavaid rakendusi kunagi sulgema. Ainus erand on see, kui taustal töötav rakendus jookseb kokku või ei ärka korralikult unerežiimist. Seejärel saab kasutaja multitegumtöötlusribal rakendused käsitsi sulgeda, kuid seda juhtub harva.
Seega ei pea te üldiselt taustaprotsesse haldama, sest süsteem hoolitseb nende eest ise. Seetõttu on iOS nii värske ja kiire süsteem.
Arendaja vaatenurgast
Rakendus võib multitegumtöö osana reageerida kokku kuue erineva olekuga:
1. ApplicationWillResignActive
Tõlkes tähendab see olek, et rakendus loobub tulevikus aktiivse rakendusena (st esiplaanil olevast rakendusest) (mõne millisekundi pärast). See juhtub näiteks rakenduse kasutamise ajal kõne vastuvõtmisel, kuid samal ajal põhjustab see meetod selle oleku ka enne, kui rakendus läheb taustale, seega peate nende muudatustega arvestama. See meetod sobib ka nii, et näiteks peatab sissetuleva kõne korral kõik tegevused, mida ta teeb ja ootab kõne lõpuni.
2. applicationDidEnterBackground
Olek näitab, et rakendus on läinud taustale. Arendajad peaksid kasutama seda meetodit kõigi protsesside peatamiseks, mis ei pea tingimata taustal töötama, ning tühjendama mälu kasutamata andmetest ja muudest protsessidest, nagu aeguvad taimerid, laaditud piltide kustutamine mälust, mida pole tingimata vaja, või sulgemine. ühendused serveritega, välja arvatud juhul, kui rakenduse jaoks on taustal ühenduse loomine ülioluline. Kui meetodit rakenduses käivitatakse, tuleks seda sisuliselt kasutada rakenduse täielikuks peatamiseks, kui mõni selle osa ei pea taustal töötama.
3. applicationWillEnterForeground
See olek on vastupidine esimesele olekule, kus rakendus taandub aktiivsesse olekusse. Olek tähendab lihtsalt seda, et magamisrakendus jätkab taustal töötamist ja ilmub järgmise paari millisekundi jooksul esiplaanile. arendajad peaksid kasutama seda meetodit kõigi protsesside jätkamiseks, mis olid rakenduse taustal töötamise ajal passiivsed. Ühendused serveritega tuleks taastada, taimerid lähtestada, pildid ja andmed mällu laadida ning muud vajalikud protsessid võivad jätkuda vahetult enne, kui kasutaja uuesti laaditud rakendust näeb.
4. ApplicationDidBecomeActive
Olek näitab, et rakendus on pärast esiplaanile taastamist just aktiivseks muutunud. See on meetod, mille abil saab teha kasutajaliideses täiendavaid kohandusi või taastada kasutajaliides algsesse olekusse jne. See juhtub tegelikult hetkel, kui kasutaja rakendust juba ekraanil näeb, mistõttu on vaja määrake ettevaatlikult, mis juhtub selle ja eelmise meetodi meetodil. Neid kutsutakse üksteise järel mõne millisekundilise erinevusega.
5. ApplicationWillTerminate
See olek toimub mõni millisekund enne rakenduse väljumist, st enne rakenduse tegelikku lõpetamist. Kas käsitsi multitegumtööst või seadme väljalülitamisel. Meetodit tuleks kasutada töödeldud andmete salvestamiseks, kõigi tegevuste lõpetamiseks ja enam mittevajalike andmete kustutamiseks.
6. ApplicationDidReceiveMemoryWarning
Kõige rohkem arutatakse viimast olekut. Ta vastutab vajaduse korral rakenduse iOS-i mälust eemaldamise eest, kui see kasutab tarbetult süsteemiressursse. Ma ei tea täpselt, mida iOS taustarakendustega teeb, kuid kui tal on vaja rakendust ressursside vabastamiseks teistele protsessidele, palub see mäluhoiatusega vabastada kõik olemasolevad ressursid. Nii et seda meetodit nimetatakse rakenduses. Arendajad peaksid selle juurutama nii, et rakendus loobuks eraldatud mälust, salvestaks kõik pooleli olevad andmed, puhastaks mälust mittevajalikud andmed ja vabastaks muidu piisavalt mälu. Tõsi, paljud arendajad, ka algajad, ei mõtle sellistele asjadele ega mõista neid ning siis võib juhtuda, et nende rakendus ohustab aku kasutusaega ja/või kulutab asjatult süsteemiressursse, kasvõi taustal.
Kohtuotsus
Need kuus olekut ja nendega seotud meetodid on iOS-i kõigi "multitegumtöö" taustaks. see on suurepärane süsteem seni, kuni arendajad ei ignoreeri tõsiasja, et on vaja vastutada selle eest, mida rakendus nende kasutajate seadmetesse paiskab, kui need on minimeeritud või saavad süsteemilt hoiatusi ja nii edasi.
Allikas: macworld.com
Autorid: Jakub Požárek, Martin Doubek (ArnieX)
Kas teil on ka probleem, mida lahendada? Kas vajad nõu või leiad sobiva rakenduse? Ärge kartke meiega ühendust võtta jaotises oleva vormi kaudu Nõustamine, järgmine kord vastame teie küsimusele.
Tere, väga lahe artikkel, aga ma ei tea, kas teil on selle jaoks tehnilist tuge. Kuna olen õhtuti enne magamaminekut mitu korda aku lahendanud ja juhtus nii, et wifi ja mobiilse andmeside väljalülitamisega läks rohkem kui teisel juhul väljalülitatud wifiga ja ainult 3G-ga.
Kahjuks on kogemus selline, et iOS-is tuleb rakendused käsitsi välja lülitada ja süsteem ei tööta enam nii hästi kui varem.
Asendasin iPhone'i Windows Phone'i vastu (Samsung Omnia W 6200,-) ja süsteemi kiirus on hoopis teisel tasemel.
Kardan, et kui Windows 8 Metro tahvelarvutid välja tulevad, siis vahetan ka iPadi välja...
@007 – jah, kui võrrelda vanu iPhone3G-sid uute WP omadega, siis jah (kes oleks seda oodanud?) on WP üsna kiirem. Muidu Karlulka jutud sulle ei lähe ja sobis võrrelda praegust HW-d. Ostsin ka WP7 ja lõpuks sain 4s-i, mis esindab hoopis teist kasutustaset kui WP7. Nii et passige mõnusalt ja kerige lõputult läbi plaatide.
Olen Pajaga täiesti nõus
Panustaks jällegi ühe teise tünni - Samsung Galaxy S ja iPhone 4 - purust - ütleks vanuse poolest võrreldav? Apple on iOS 4 ajal ja kasutatavuse ja kiiruse poolest kusagil mujal kui Androidis rakendustega töötamise kontseptsiooni väga hästi lahendanud, aga Androidiga enam sama lugu ei ole. Lõpuks sattusin ikkagi 4S-i ja mul pole etteheiteid, sest "see lihtsalt töötab" .. ja see töötab väga kiiresti!
Teooria on ilus... Aga praktikas panen ikka rakenduse baaris kinni ;)
Aitäh, väga huvitav, pragmaatiline, huvitav, sellest ei puudu kiiks ja sügavus. Rõhutades oluliselt tänapäeva noorte kinnisideed selle keelatud kaubamärgiga! Aga tänan teda ja ka selle artikli eest.
Artikkel on täiesti vale.
Rakendus ei sulgu kodunupu vajutamisel, nagu ekslikult öeldud, vaid peatub. St. kindlasti ära kustuta mälust ja ära lõpeta. Peatage lihtsalt töö, iOS annab sellele rakendusele 0% protsessori aega. See kindlasti ei "vahetu" kuskil iDevice'i mälus, nagu artiklis öeldud. See on tõesti tänu sellele, et on võimalik kasutada rakenduste vahetamist.
Rakendus eemaldatakse mälust, kui telefonil on teiste kõrgema prioriteediga rakenduste käitamiseks vähe mälu (tavaliselt töötab esiplaanil mõni muu rakendus).
Esimesel juhul on sul õigus, tegemist oli tõlkeveaga. Mis puudutab vahetamist, siis me ei räägi siin sellest, me räägime operatsioonimälust, mitte iOS-i seadme salvestusruumist.
rakenduse kujutist hoitakse mällu piiratud aja jooksul, kuni see käsuga uuesti välja kutsutakse (vt 13,7 GB 16 GB-st: 2,3 GB on reserveeritud süsteemi ja peatatud rakenduste jaoks)
Seega tuleb vahet teha sellistel rakendustel nagu Navigation, Skype jms, need rakendused jäävad aktiivseks ka taustal või mingi funktsioon ei lõpe ja jätkab näiteks andmete saatmist oma asukoha või asukohainfo kohta. Või nagu Vokul pord režiimis kuula ja multitasking kuulab ikka taustal.
Need rakendused tühjendavad akut ja need tuleb käsitsi sulgeda ja mitte oodata iOS-i. teistega pole see vajalik, seal ainult juhul, kui rakendus jookseb kokku.
Ma ei saa artikliga nõustuda. Min. 1. põlvkonna iPadis (iOS 5.0.1) on selge, kas mul on multitegumtöötlusribal palju "avatud" rakendusi või ainult paar. iOS üritab küll mälu puhastada, kuid sellest ilmselgelt ei piisa – RAM-i väiksus on ilmselt selle suurim nõrkus.
nii et palju sõltub süsteemist ja kasutatavast riistvarast, on üsna loogiline, et iOS 1-ga iPad 5.0.1 on see halvem kui 2. põlvkonna iPadil
Vabandust, see on IDEALSE viisi kirjeldus, kuidas see peaks töötama. Tegelikkus on paraku hoopis teine ja seda teaksite, kui kasutaksite Apple’i tooteid, vähemalt sama palju kui mina (st aeg-ajalt).
"Sageli võite kuulda ebausku, et iOS-is taustal töötavad rakendused täidavad töömälu."
See ei ole ebausk, see on lihtsalt fakt. Lõppude lõpuks väidate seda artiklis ise.
"Nagu ma varem mainisin, ei pea kasutaja kunagi taustal töötavaid rakendusi sulgema."
NONSENS. See on lihtsalt jama, õunapropaganda, ära saa minu peale pahaseks.
"Kuid te ei pea seda tegema, sest iOS teeb seda teie eest. Kui teil on taustal peatatud mõni nõudlik rakendus, näiteks mäng, mis kasutab palju RAM-i, eemaldab iOS selle vajaduse korral automaatselt mälust ja saate selle taaskäivitada, puudutades rakenduse ikooni.
Pole tõsi. Olukord on veidi erinev. Tüüpiline näide – mul töötavad taustal nõudlikud rakendused, vajan mänge. Käivitan brauseri, avan paar vahekaarti -> vajan rohkem mälu. Mis juhtub? Hoian tagaplaanil nõudlikke rakendusi, vastupidi, BRUSER ISE KUKKUB. Kui ma nõudlikud rakendused käsitsi sulgen, töötab brauser pikka aega probleemideta.
See on praktika, mitte teooria. Ja ma olen üllatunud, et Apple'i toote pikaajalise kasutajana te seda ikka veel ei tea.
Aitäh, see on väga hästi kirjeldatud ja hästi selgitatud. Sa oled mind päris palju aidanud ;-) ♥
Alustuseks ei ole ma ei iOS-i poolt ega vastu, nagu Androidi puhul, aga siin on paar kummalist asja, kui nagu siin on kirjas: "iOS-is kohtate harva rakenduse krahhi" siis Androidi puhul jooksevad rakendused kokku umbes kord aastas: -P
http://dotekomanie.blog.mobilmania.cz/2012/02/stabilita-ios-vs-android/
Jah, aga juhud, kui peate rakenduse käsitsi sulgema, on tõesti minimaalsed, kasutasin seda umbes korra? ;-) ja Mobilemania võrdlustestile lingi andmine on suht mõttetu, kui tahan lugeda reklaamist, mille Google maksis, siis viskan sinna pilgu peale ;-) igaüks saab suvalise android telefoni pihku ja see ei tööta puhtalt, see tähendab, välja arvatud Galaxy Nexus, mis tähendab, et süsteem on enam-vähem kohandatud. Üldiselt on android katastroof
@Mek – olen Apple'i tooteid kasutanud iga päev mitu aastat ja minuga pole seda kunagi juhtunud, nii et teie teooria millegipärast ei tööta.
UMBROHI:
@redakce – On näha, et veebilehe kallal käib pidevalt töö või sellega midagi toimub, aga mul on tunne, et ei lähe nädalatki, et kõik toimiks nii nagu peaks. Ja ega ma siia enam eriti ei tule, sest uus välimus mulle ei sobi. Vähemalt kasutasin iPhone'is mobiiliversiooni, aga nüüd ei tööta see üldse – kuidas nii? Hetkel nad kommentaarides olevatele postitustele ei vasta.
@SteveJSF Kahjuks ei lähe asjad alati nii, nagu me tahaksime. Mis puudutab vastuseid, siis uus SEO plugin rikkus need ära, see on hetkel lahendamisel.
WP-Touch lõpetas ka meie teenuse mingil põhjusel, mistõttu otsustasime välja mõelda parema lahenduse kui see pistikprogramm. Nii et võite varsti järgmisi uudiseid oodata :-)
Tore artikkel. Mis praktikasse puutub, siis ütlen, et olen mitme asjaga nõus ja enamasti töötab nii nagu öeldud, kuid kahjuks on ikka veel halvasti kirjutatud taotlusi, mis ei käitu korrektselt ja siis on sellised juhtumid nagu märkisid mõned lugejad. Ma arvan, et Skype on väga hea näide, praktikast tean, et see töötab endiselt taustal (ja see on hea ja nii see peakski olema), kuid probleem on selles, et see rakendus kulutab seadme akut palju ja Ma ei näe seda enam korralikult. Ja vastupidi, sellised rakendused nagu Facebook, Badoo jne. nad töötavad ka veel taustal, kuid nende tarbimine on peaaegu märkamatu (ma vähemalt ei märka). Seega arvan, et viga on üksikutes rakendustes. Kui teaksite, millised, siis piisaks ainult nende käsitsi väljalülitamisest!
Nii et praktika on selline, et Facebook töötab vastavalt vajadusele ja Skype ainult siis, kui vaja.
No teisest küljest, kui mul on vaja akut säästa ja ma tean, et pean iPhone'i võimalikult kaua "elus" hoidma, siis lülitan ka multitegumtöös kõik ebavajaliku välja, aga enamasti see suurt mõju ei avalda, aga vajadusel piiran 3G-d, kogu mobiilset internetti, WiFi-d, asukohateenuseid , lennukirežiimi, valgustuse tugevust jne. Rutiini raames lülitan ka multitegumtöös eelmainitud rakendused välja.
Nii et isiklikult arvan, et artikkel vastab tõele, kahjuks lükkavad mõned programmeerijad need asjad oma rakendustega ümber, kuna nende rakendused on valed ja minu arvates on sellele ainult kaks lahendust 1. Kui on võimalik rakendust mitte kasutada ja leida võimalusel alternatiiv, või 2. Kui ei ole võimalik, vaata nt Skype'i, kirjuta see antud programmeerijale aruandesse ja looda, et nad midagi ette võtavad.
Rakenduste käsitsi keelamine võib olla mõttetu, kuid teen seda siiski. Üritasin ka rakendussüsteemi mitte välja lülitada, lasta neil töötada (või jätta taustale magama) ja aku kestvus oli palju väiksem, pidin ka iPad 2 umbes kolme nädala pärast uuesti käivitama, see reageeris aeglaselt. Nii et ma lülitan rakendused käsitsi välja, aku kestab kauem, hiljuti taaskäivitasin jõulupühal ja see töötab hästi.
Muide, ma teen sama asja ka Mac OS X-is, lihtsalt sulgen mittevajaliku rakenduse (CMD+Q), see on parem, kui see taustal magama jääma ja RAMi asjatult sööma (mida OS X suudab ei tööta väga hästi). Mul on vähe RAM-i, ainult 8 GB, kuid 7 GB-ga Windows 8-s ei reageerinud süsteem aeglaselt ega vahetanud, OS X-is on see üsna tavaline nähtus (ma pole kunagi arvutit välja lülitanud, teen seda ka Maciga, nii et kuu ja rohkem tööaeg pole erand, probleem on selles, et ma pean mõnikord ettevaatusabinõuna Maci taaskäivitama, et vabastada RAM ja "kiirendada", Windows 7 ei vaja seda).
Mind huvitab rohkem see, kuidas rakendust tegelikult lõhkeda. Minuga juhtus see, et rakendus (täpsemalt Geocachingu puhul) sattus olekusse, kus laadis midagi emaserverist ja jäi sellesse olekusse kinni. Kodunupp töötas, pärast taaskäivitamist läks tagasi külmutatud olekusse (kust ma pooleli jäin). Käsitsi väljumine (mitmemaitsmismenüüsse, sulgemiseks hoidke ikooni ja miinust all) = rakendus kadus, pärast taaskäivitamist avanes see algses olekus, kus see külmus. Seega panin kõik kinni, lülitasin telefoni välja, lülitasin sisse, topeltklõpsasin KODU ja ennäe – rakendused olid kõik olemas nagu enne sulgemist vahetult enne väljalülitamist. Ei aidanud ka taaskäivitamine - hoia kodus ja üleval, kuni palavaks läheb. Ainus, mis aitas, oli rakenduse telefonist eemaldamine, taaskäivitamine ja telefoni uuesti installimine. Millegipärast ma ei võtnud seda.
See Multitegumtöötluse haldus töötab ja arendajate ülesanne on selliste olukordadega toime tulla. Kes on huvitatud kogu olukorra täpsemast ja professionaalsemast kirjeldusest, siis kirjutan siia, kuidas on.
Rakendus võib vastata kokku 6 olekule ja need olekud on:
ApplicationWillResignActive
applicationDidEnterBackground
applicationWillEnterForeground
rakendusDidBecomeActive
ApplicationWillTerminate
applicationDidReceiveMemoryWarning
Nüüd püüan neid seisundeid üksikasjalikumalt kirjeldada.
applicationWillResignActive – see olek tähendab, et edaspidi (mõne millisekundi pärast) loobub rakendus aktiivsest rakendusest (st esiplaani rakendusest) see juhtub näiteks rakenduse kasutamise ajal kõne vastuvõtmisel, kuid samal ajal ka see Seetõttu käivitub see olek juba enne, kui rakendus läheb taustale, seega peate neid muudatusi arvesse võtma. See meetod sobib ka nii, et näiteks peatab sissetuleva kõne korral kõik tegevused, mida ta teeb ja ootab kõne lõpuni.
applicationDidEnterBackground – see olek näitab, et rakendus on sisenenud taustale, arendajad peaksid seda meetodit kasutama, et peatada kõik protsessid, mis ei pea tingimata taustal töötama, ning puhastada mälu kasutamata andmetest ja muudest protsessidest, näiteks aegumise taimerid, kustutada mällu laetud pildid, mida pole tingimata vaja, või katkestavad ühenduse serveritega, kui rakenduse jaoks pole taustal ühenduse loomine ülioluline. Põhimõtteliselt tuleks seda meetodit rakenduses kutsudes kasutada rakenduse täielikuks peatamiseks, kui mõni selle osa ei pea taustal töötama.
applicationWillEnterForeground – see olek on vastupidine esimesele olekule, mil rakendus taandub aktiivsesse olekusse. See rakenduse olek tähendab lihtsalt seda, et järgmise paari millisekundi jooksul jätkab magav rakendus taustalt ja ilmub esiplaanile (rakendus siseneb esiplaanile). Seda meetodit peaksid arendajad kasutama kõigi protsesside jätkamiseks, mis olid rakenduse töötamise ajal passiivsed. taustal tuleks ühendused serveritega taastada, taimerid lähtestada, pildid ja andmed mällu laadida ning muud vajalikud protsessid võivad jätkuda vahetult enne, kui kasutaja uuesti laaditud rakendust näeb.
applicationDidBecomeActive – see olek näitab, et rakendus on just pärast esiplaanile taastamist aktiivseks muutunud. See on meetod, mille abil saab teha kasutajaliideses täiendavaid muudatusi või taastada kasutajaliides algsesse olekusse jne. See meetod tegelikult juhtub kui kasutaja juba ekraanilt näeb, seega tuleb bilansist määrata, mis selle ja eelmise meetodi puhul toimub. Neid kutsutakse üksteise järel mõne millisekundilise erinevusega.
applicationWillTerminate – see olek toimub mõni millisekund enne rakenduse lõpetamist, st enne rakenduse tegelikku lõpetamist. Kas käsitsi multitegumtööst või seadme väljalülitamisel. Seda meetodit tuleks kasutada töödeldud andmete salvestamiseks ja kõigi tegevuste lõpetamiseks ja andmete kustutamiseks, mida enam ei vajata.
applicationDidReceiveMemoryWarning - ja see on tingimus, millest siin palju räägitakse, vajadusel eemaldab iOS rakenduse mälust, kui see süsteemiressursse asjatult kasutab. Ma ei tea täpselt, mida iOS taustarakendustega teeb, kuid kui tal on vaja rakendust ressursside vabastamiseks teistele protsessidele, palub see mäluhoiatusega vabastada selles olevad ressursid. Nii kutsutakse seda meetodit rakenduses välja ja arendajad peaksid selle rakendama nii, et rakendus loobuks oma mälust, salvestaks töödeldud ja kustutaks mälust mittevajalikud andmed ning muul viisil vabastaks piisavalt mälu. Tõsi, paljud arendajad, näiteks algajad, ei mõtle sellistele asjadele või ei saa neist aru ja siis võib juhtuda, et nende rakendus seab ohtu aku tööea ja/või kulutab asjatult süsteemiressursse isegi taustal. Ma ei tea, kuidas iOS käitub, kui rakendus pärast mäluhoiatuse saamist midagi ei tee ja jätkab süsteemiressursside tarbimist nagu varem.
Need vähesed olekud ja nendega seotud meetodid on kogu iOS-i "multitegumtöö" taga... see on suurepärane süsteem, kui arendajad ei jäta tähelepanuta vajadust vastutada selle eest, mida rakendused nende kasutajate seadmetesse paiskavad, kui neid minimeerida või hankige süsteemilt hoiatusi ja palju muud ...
Loodan, et see lühike kirjeldus aitab teil mõista, kuidas rakendus aitab kõik sujuvalt töötada. Seega on peaaegu võimalik väita, et tegemist on kasutaja ebaõige kasutamise veaga, millest võib aru saada nii - kui kasutate suurel hulgal peamiselt amatöörarendajate tasuta rakendusi, töötab teie iOS-seade halvemini kui suurt tasuta ja tasuliste rakenduste arv kogenud või professionaalsetelt arendajatelt. See ei tähenda, et mõlemas ringis poleks erandeid. Näiteks foursquare käitub üsna veidralt ja nõudlikult ning samas võiks eeldada, et tegemist on väga osavate arendajatega, kes annavad palju aega mälu- ja akuhaldusele, aga vastupidi. Suurim probleem 4SQ puhul on suhtlus serveritega, mis sageli hangub ja on ülekoormatud. See on vaid näide sellest, et isegi tuntud rakendustel on probleeme, mis ei muuda fakti, et 4SQ on suurepärane teenus.
Lõbutsege Õunad!! :)
Lisasime info artiklisse autori lahkel loal ;-)
Vabandust, ENTER oli lõikude vahel igal pool, siin võiks midagi ette võtta, et kommentaarides oleks vähemalt natukene RIKTEKSTI VORMINDAMIST.
ArnieX: aitäh kommentaari eest!!
See Faramir: ma räägin ainult teie probleemist, ma ei tea, kas see teie puhul aitab, aga ma tean omast kogemusest, et kui sulgete rakenduse (mitmetegumtöötluses), kulub selle sulgemiseks mõni sekund, nii et kui lülitad selle välja, soovitan oodata paar sekundit (ma ootan ca 10 sekundit, et olla kindel), kuni see on kindlasti lõppenud ja alles siis käivitan uuesti.
Olete teretulnud ;) Aitan hea meelega, kui mul on võimalus anda oma panus.
Kuidas see Meebiga peaks olema, kui ma login selle kaudu sisse ICQ või FB vestlusesse, siis logib see 10 minuti pärast automaatselt välja ja lähen võrguühenduseta või töötab edasi? tänan selgituse eest :P
Kümne minuti pärast katkeb rakenduse Interneti-ühendus lihtsalt. Siiski olete Meeba serveris endiselt võrgus ja saate tõuketeate, kui keegi teile kirjutab. Peale rakenduse taasavamist luuakse hetkega ühendus ja saab rõõmsalt vestelda.
Seega, kui ma lingitud artiklist õigesti aru sain, siis statistika viitab ainult rakenduste krahhidele nende käivitamisel, mis on üsna väike protsent juhtudest, kus krahh võib tekkida. Seetõttu ei saa sellest "uuringust" järeldada, et iOS on minu arvates vähem stabiilne. Lisaks unustas Forbesist võetud artikli tõlkija mainida, et rakenduste krahhide kohta andmeid pakkuvat ettevõtet toetab muuhulgas Google ("Crittercism, mille taga on Google Ventures,...").