Sule kuulutus

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.

.