Ka ende shumë njerëz që nuk e dinë se si funksionon multitasking në iOS. Për të filluar, megjithatë, është e nevojshme të theksohet se ky nuk është një multitasking i vërtetë, por një zgjidhje shumë e zgjuar që nuk e rëndon sistemin apo përdoruesit.
Shpesh mund të dëgjohen besëtytnitë se aplikacionet që funksionojnë në sfond në iOS mbushin memorien e funksionimit, gjë që çon në ngadalësim të sistemit dhe jetëgjatësi të baterisë, kështu që përdoruesi duhet t'i fikë ato manualisht. Shiriti i shumë detyrave në fakt nuk përmban një listë të të gjitha proceseve në sfond të ekzekutimit, por vetëm aplikacionet e lançuara së fundi. Pra, përdoruesi nuk duhet të shqetësohet për proceset që funksionojnë në sfond, përveç në disa raste. Kur shtypni butonin Home, aplikacioni zakonisht shkon në gjumë ose mbyllet, në mënyrë që të mos ngarkojë më procesorin ose baterinë dhe të çlirojë memorien e nevojshme nëse është e nevojshme.
Pra, ky nuk është një multitasking i plotë kur keni dhjetëra procese që funksionojnë vetëm një aplikacion është gjithmonë në plan të parë, i cili ndalet ose fiket plotësisht nëse është e nevojshme. Vetëm disa procese dytësore ekzekutohen në sfond. Kjo është arsyeja pse rrallë do të hasni në një dështim të aplikacionit në iOS, për shembull Android është i stërmbushur me aplikacione të ekzekutuara për të cilat përdoruesi duhet të kujdeset. Nga njëra anë, kjo e bën punën me pajisjen të pakëndshme, dhe nga ana tjetër, shkakton, për shembull, fillimin e ngadaltë dhe kalimet midis aplikacioneve.
Lloji i kohës së ekzekutimit të aplikacionit
Aplikacioni në pajisjen tuaj iOS është në një nga këto 5 gjendje:
- Vrapimi: aplikacioni niset dhe funksionon në plan të parë
- Sfondi: është ende në punë, por funksionon në sfond (mund të përdorim aplikacione të tjera)
- Pezulluar: Ende përdor RAM, por nuk funksionon
- Joaktiv: aplikacioni po funksionon por komanda indirekte (për shembull, kur bllokoni pajisjen me aplikacionin në punë)
- Nuk funksionon: Aplikimi ka përfunduar ose nuk ka filluar
Konfuzioni vjen kur aplikacioni shkon në sfond në mënyrë që të mos shqetësojë. Kur shtypni butonin Home ose përdorni gjestin për të mbyllur aplikacionin (iPad), aplikacioni shkon në sfond. Shumica e aplikacioneve pezullohen brenda disa sekondave (ato ruhen në RAM-in e iDevice në mënyrë që të mund të lansohen shpejt, ata nuk e ngarkojnë aq shumë procesorin dhe kështu kursejnë jetëgjatësinë e baterisë) Ju mund të mendoni se nëse një aplikacion vazhdon të përdorë memorien, ju keni për ta fshirë manualisht për ta çliruar. Por ju nuk duhet ta bëni këtë, sepse iOS do ta bëjë atë për ju. Nëse keni një aplikacion kërkues të pezulluar në sfond, si për shembull një lojë që përdor një sasi të madhe RAM, iOS do ta heqë atë automatikisht nga memoria kur është e nevojshme dhe mund ta rinisni duke trokitur ikonën e aplikacionit.
Asnjë nga këto gjendje nuk pasqyrohet në shiritin e shumë detyrave, paneli tregon vetëm një listë të aplikacioneve të lançuara së fundi, pavarësisht nëse aplikacioni është i ndaluar, në pauzë ose nëse funksionon në sfond. Ju gjithashtu mund të vini re se aplikacioni që po ekzekutohet aktualisht nuk shfaqet në panelin Multitasking
Detyrat e sfondit
Normalisht, kur shtypni butonin Home, aplikacioni do të funksionojë në sfond dhe nëse nuk e përdorni, automatikisht do të pushojë brenda pesë sekondave. Pra, nëse jeni duke shkarkuar një podcast, për shembull, sistemi e vlerëson atë si një aplikacion që funksionon dhe e vonon përfundimin me dhjetë minuta. Më së voni pas dhjetë minutash, procesi lirohet nga kujtesa. Me pak fjalë, nuk keni pse të shqetësoheni për ndërprerjen e shkarkimit duke shtypur butonin Home, nëse nuk duhen më shumë se 10 minuta për ta përfunduar atë.
Vrapim i pacaktuar në sfond
Në rast mosaktiviteti, sistemi e mbyll aplikacionin brenda pesë sekondave, dhe në rastin e shkarkimeve, ndërprerja vonohet për dhjetë minuta. Megjithatë, ka një numër të vogël aplikacionesh që kërkojnë ekzekutimin në sfond. Këtu janë disa shembuj të aplikacioneve që mund të funksionojnë në sfond për një kohë të pacaktuar në iOS 5:
- Aplikacionet që luajnë zë dhe duhet të ndërpriten për një kohë (ndërprerja e muzikës gjatë një telefonate, etj.),
- Aplikacionet që gjurmojnë vendndodhjen tuaj (softuer navigimi),
- Aplikacionet që marrin telefonata VoIP, për shembull nëse përdorni Skype, mund të merrni një telefonatë edhe kur aplikacioni është në sfond,
- Shkarkime automatike (p.sh. stendën e gazetave).
Të gjitha aplikacionet duhet të mbyllen nëse nuk po kryejnë më një detyrë (siç janë shkarkimet në sfond). Megjithatë, ka përjashtime që funksionojnë vazhdimisht në sfond, siç është aplikacioni origjinal Mail. Nëse funksionojnë në sfond, ata marrin memorie, përdorimin e CPU-së ose reduktojnë jetëgjatësinë e baterisë
Aplikacionet që lejohen të funksionojnë në sfond për një kohë të pacaktuar mund të bëjnë gjithçka që bëjnë gjatë ekzekutimit, nga luajtja e muzikës deri te shkarkimi i episodeve të reja të Podcast-it.
Siç e përmenda më parë, përdoruesi nuk ka nevojë të mbyllë kurrë aplikacionet që funksionojnë në sfond. Përjashtimi i vetëm nga kjo është kur një aplikacion që funksionon në sfond rrëzohet ose nuk zgjohet nga gjumi siç duhet. Përdoruesi më pas mund t'i mbyllë aplikacionet manualisht në shiritin e shumë detyrave, por kjo ndodh rrallë.
Pra, në përgjithësi, nuk keni nevojë të menaxhoni proceset e sfondit, sepse sistemi do të kujdeset vetë për to. Kjo është arsyeja pse iOS është një sistem kaq i freskët dhe i shpejtë.
Nga këndvështrimi i një zhvilluesi
Aplikacioni mund të reagojë me gjithsej gjashtë gjendje të ndryshme si pjesë e multitasking:
1. aplikacioniWillResignActive
Në përkthim, kjo gjendje do të thotë që aplikacioni do të japë dorëheqjen si aplikacion aktiv (d.m.th., aplikacioni në plan të parë) në të ardhmen (çështje për disa milisekonda). Kjo ndodh, për shembull, kur merrni një telefonatë gjatë përdorimit të aplikacionit, por në të njëjtën kohë, kjo metodë shkakton edhe këtë gjendje përpara se aplikacioni të shkojë në sfond, kështu që ju duhet të merrni parasysh këto ndryshime. Kjo metodë është gjithashtu e përshtatshme që, për shembull, të pezullojë të gjitha aktivitetet që kryen kur ka një telefonatë hyrëse dhe të presë deri në fund të telefonatës.
2. applicationDidEnterBackground
Statusi tregon që aplikacioni ka kaluar në sfond. Zhvilluesit duhet ta përdorin këtë metodë për të pezulluar të gjitha proceset që nuk kanë nevojë domosdoshmërisht të ekzekutohen në sfond dhe për të pastruar memorien e të dhënave të papërdorura dhe proceseve të tjera, të tilla si kohëmatësit që skadojnë, pastrojnë imazhet e ngarkuara nga memorja që nuk do të nevojiten domosdoshmërisht, ose mbyllja lidhjet me serverët, përveç nëse është kritike që aplikacioni të përfundojë lidhjet në sfond. Kur metoda thirret në aplikacion, në thelb duhet të përdoret për të pezulluar plotësisht aplikacionin nëse një pjesë e tij nuk kërkohet të ekzekutohet në sfond.
3. aplikacioniWillEnterForeground
Kjo gjendje është e kundërta e gjendjes së parë, ku aplikacioni do të japë dorëheqjen në gjendjen aktive. Gjendja thjesht do të thotë që aplikacioni i gjumit do të rifillojë nga sfondi dhe do të shfaqet në plan të parë brenda disa milisekondave të ardhshme. zhvilluesit duhet të përdorin këtë metodë për të rifilluar çdo proces që ishte joaktiv ndërsa aplikacioni ishte në sfond. Lidhjet me serverët duhet të rivendosen, kohëmatësit të rivendosen, imazhet dhe të dhënat të ngarkohen në memorie dhe proceset e tjera të nevojshme mund të rifillojnë pak përpara se përdoruesi të shohë përsëri aplikacionin e ngarkuar.
4. aplikacioniDidBecomeActive
Gjendja tregon se aplikacioni sapo është aktivizuar pasi është rikthyer në plan të parë. Kjo është një metodë që mund të përdoret për të bërë rregullime shtesë në ndërfaqen e përdoruesit ose për të rikthyer UI në gjendjen e tij origjinale, etj. Kjo në fakt ndodh në momentin kur përdoruesi tashmë e sheh aplikacionin në ekran, kështu që është e nevojshme të përcaktoni me kujdes se çfarë ndodh në metodën e kësaj dhe në metodën e mëparshme. Ata thirren njëri pas tjetrit me një ndryshim prej disa milisekonda.
5. aplikacioni do të përfundojë
Kjo gjendje ndodh disa milisekonda përpara se aplikacioni të dalë, domethënë përpara se aplikacioni të përfundojë në të vërtetë. Ose manualisht nga kryerja e shumë detyrave ose kur fikni pajisjen. Metoda duhet të përdoret për të ruajtur të dhënat e përpunuara, për të përfunduar të gjitha aktivitetet dhe për të fshirë të dhënat që nuk do të nevojiten më.
6. applicationDidReceiveMemoryWarning
Është shteti i fundit që është më i diskutuari. Ai është përgjegjës për heqjen e aplikacionit nga memoria iOS nëse është e nevojshme nëse përdor burimet e sistemit në mënyrë të panevojshme. Nuk e di konkretisht se çfarë bën iOS me aplikacionet në sfond, por nëse i duhet një aplikacion për të lëshuar burime në procese të tjera, ai e bën atë me një paralajmërim memorie për të lëshuar çfarëdo burimi që ka. Pra, kjo metodë quhet në aplikacion. Zhvilluesit duhet ta zbatojnë atë në mënyrë që aplikacioni të heqë dorë nga memoria që ka ndarë, të ruajë gjithçka në zhvillim, të pastrojë të dhënat e panevojshme nga memorja dhe përndryshe të çlirojë në mënyrë adekuate memorien. Është e vërtetë që shumë zhvillues, madje edhe fillestarë, nuk mendojnë apo kuptojnë gjëra të tilla dhe më pas mund të ndodhë që aplikacioni i tyre të kërcënojë jetëgjatësinë e baterisë dhe/ose të konsumojë në mënyrë të panevojshme burimet e sistemit, qoftë edhe në sfond.
Verdikti
Këto gjashtë gjendje dhe metodat e tyre shoqëruese janë sfondi i të gjitha "multitasking" në iOS. është një sistem i shkëlqyeshëm, për sa kohë që zhvilluesit nuk e injorojnë faktin që ka nevojë të jenë përgjegjës për atë që aplikacioni hedh në pajisjet e përdoruesve të tyre, nëse ato minimizohen ose marrin paralajmërime nga sistemi etj.
burimi: macworld.com
Autorët: Jakub Požárek, Martin Doubek (ArnieX)
Keni edhe ju një problem për të zgjidhur? Keni nevojë për këshilla apo ndoshta gjeni aplikacionin e duhur? Mos hezitoni të na kontaktoni përmes formularit në seksion Këshillim, herën tjetër do t'i përgjigjemi pyetjes suaj.
Përshëndetje, artikull vërtet i lezetshëm, por pyes veten nëse keni ndonjë mbështetje teknike për të. Sepse e kam zgjidhur baterine disa here ne mbremje para gjumit dhe ka ndodhur qe me wifi dhe te dhena celulare te fikur, ka marre me shume se ne nje rast tjeter me wifi te fikur dhe vetem 3G.
Për fat të keq, përvoja është se në iOS, aplikacionet duhet të fiken manualisht dhe sistemi nuk funksionon më si më parë.
E zëvendësova iPhone tim me një Windows Phone (Samsung Omnia W për 6200,-) dhe shpejtësia e sistemit është në një nivel krejtësisht të ndryshëm.
Kam frikë se kur të dalin tabletët Windows 8 Metro, do të zëvendësoj edhe iPad-in...
@007 – po, nëse po i krahasoni iPhone3G-të e vjetër me ato të reja WP, atëherë po (kush do ta priste këtë?) WP do të jetë pak më i shpejtë. Përndryshe, thashethemet për Karlulkën nuk ju shkojnë mirë dhe ishte me vend të krahasoni HW aktuale. Bleva gjithashtu WP7 dhe më në fund përfundova me 4s, që përfaqëson një nivel krejtësisht të ndryshëm të përdorshmërisë se WP7. Pra, kaloni këndshëm dhe pafundësisht lëvizni nëpër pllaka.
Jam plotësisht dakord me Pajën
Do të kontribuoja përsëri nga mbeturinat e një fuçi tjetër - Samsung Galaxy S dhe iPhone 4 - do të thosha të krahasueshme për sa i përket moshës? Në kohën e iOS 4, dhe për sa i përket përdorshmërisë dhe shpejtësisë diku tjetër përveç Android, Apple e ka zgjidhur shumë mirë konceptin e punës me aplikacione, por nuk është më e njëjta gjë me Android. Me ne fund perfundova me 4S gjithsesi dhe nuk kam ankesa sepse "thjesht funksionon" .. dhe funksionon shume shpejt!
Teoria eshte e bukur... Por ne praktike prape e mbyll aplikimin ne bar ;)
Faleminderit, shumë interesante, pragmatike, interesante, nuk i mungon lëkundje dhe thellësi. Duke nënvizuar ndjeshëm obsesionin e rinisë së sotme me këtë markë të ndaluar! Por faleminderit për të, si dhe për këtë artikull.
Artikulli është krejtësisht i gabuar.
Aplikacioni nuk mbyllet kur shtypet butoni Home, siç është thënë gabimisht, por ndalon. d.m.th. definitivisht mos e fshini nga kujtesa dhe mos u largoni. Thjesht ndaloni ekzekutimin, iOS do t'i japë këtij aplikacioni 0% kohë CPU. Ai definitivisht nuk "këmbë" askund në kujtesën e iDevice, siç thuhet në artikull. Kjo është me të vërtetë falë faktit që është e mundur të përdoret ndërrimi i aplikacionit.
Aplikacioni hiqet nga memoria kur telefoni ka pak memorie për të ekzekutuar aplikacione të tjera me përparësi më të lartë (zakonisht një aplikacion tjetër po ekzekutohet në plan të parë).
Në rastin e parë, keni të drejtë, ishte një gabim përkthimi. Sa i përket shkëmbimit, ne nuk po flasim për këtë këtu, ne po flasim për memorien operative, jo hapësirën e ruajtjes në pajisjen iOS.
imazhi i aplikacionit ruhet në memorie për një kohë të kufizuar derisa të thirret përsëri nga një komandë (shih 13,7 GB nga 16 GB: 2,3 GB rezervohen për sistemin dhe aplikacionet e pezulluara)
Kështu, është e nevojshme të bëhet dallimi midis aplikacioneve të tilla si Navigimi, Skype dhe të ngjashme, këto aplikacione mbeten aktive edhe në sfond, ose një funksion i caktuar nuk përfundon dhe vazhdon, për shembull, të dërgojë të dhëna për vendndodhjen e tij ose informacionin e vendndodhjes. Ose si Vokul në modalitetin pord, dëgjoni dhe multitasking është ende duke dëgjuar në sfond.
Këto aplikacione e shkarkojnë baterinë dhe është e nevojshme t'i mbyllni manualisht dhe të mos prisni për iOS. me të tjerat nuk është e nevojshme, atje vetëm në rast se aplikacioni rrëzohet.
Nuk mund të pajtohem me artikullin. Min. në një iPad të gjeneratës së parë (iOS 1) është e qartë të shohësh nëse kam shumë aplikacione "të hapura" në shiritin e shumë detyrave apo vetëm disa. iOS përpiqet të pastrojë kujtesën, por padyshim që nuk mjafton - madhësia e vogël e RAM-it është ndoshta dobësia e tij më e madhe.
kështu që shumë varet nga sistemi dhe pajisja e përdorur, është mjaft logjike që do të jetë më keq në një iPad 1 me iOS 5.0.1 sesa nëse do të ishte në një iPad të gjeneratës së dytë
Na vjen keq shoku, ky është një përshkrim i mënyrës IDEAL që duhet të funksionojë. Fatkeqësisht, realiteti është krejtësisht i ndryshëm dhe do ta dinit nëse do të përdornit produktet e Apple, të paktën aq sa unë (dmth herë pas here).
"Shpesh mund të dëgjoni besëtytni se aplikacionet që funksionojnë në sfond në iOS mbushin memorien e funksionimit."
Nuk është një bestytni, është thjesht një fakt. Në fund të fundit, ju e pretendoni vetë në artikull.
"Siç e përmenda më parë, përdoruesi nuk ka nevojë të mbyllë kurrë aplikacionet që funksionojnë në sfond."
MARRËSITË. Kjo është thjesht budallallëk, propagandë me mollë, mos u inatos me mua.
“Por ju nuk duhet ta bëni këtë, sepse iOS do ta bëjë atë për ju. Nëse keni një aplikacion kërkues të pezulluar në sfond, si për shembull një lojë që përdor një sasi të madhe RAM, iOS do ta heqë atë automatikisht nga memoria kur të jetë e nevojshme dhe mund ta rinisni duke trokitur në ikonën e aplikacionit.
Jo e vërtetë. Situata është pak më ndryshe. Një shembull tipik - kam aplikacione kërkuese që funksionojnë në sfond, më duhen lojëra. Hap shfletuesin, hap disa skeda -> kam nevojë për më shumë memorie. Çfarë do të ndodhë? Aplikacionet e vështira qëndrojnë në sfond, përkundrazi, BIË VETË SHFLETËSI. Nëse i mbyll manualisht aplikacionet kërkuese, shfletuesi funksionon për një kohë të gjatë pa asnjë problem.
Kjo është praktikë, jo teori. Dhe unë jam i befasuar që, si përdorues afatgjatë i një produkti të Apple, ju ende nuk e dini këtë.
Faleminderit, kjo është përshkruar dhe shpjeguar shumë mirë. Më ke ndihmuar shumë ;-) ♥
Sa për fillim, unë nuk jam as pro dhe as kundër iOS, ashtu si me Android, por këtu ka disa gjëra të çuditshme, nëse siç shkruhet këtu: "rrallëherë hasni një përplasje aplikacioni në iOS" pastaj në Android aplikacionet rrëzohen rreth një herë në vit: -P
http://dotekomanie.blog.mobilmania.cz/2012/02/stabilita-ios-vs-android/
Po, por rastet kur duhet të mbyllni aplikacionin manualisht janë vërtet minimale, e kam përdorur rreth një herë? ;-) dhe dhënia e një lidhjeje me testin krahasues nga Mobilemania është fare e kotë, kur dua të lexoj për reklamat që ka paguar Google, do të hedh një sy atje ;-) të gjithë mund të marrin çdo telefon android në dorë dhe atë nuk do të funksionojë pastër, domethënë, me përjashtim të Galaxy Nexus, i cili është se sistemi është pak a shumë i bërë me porosi. Në përgjithësi, android është një fatkeqësi
@Mek – Unë i përdor produktet e Apple çdo ditë për disa vite dhe kjo nuk më ka ndodhur kurrë, kështu që teoria juaj disi nuk funksionon.
OT:
@redakce – Mund ta shihni që faqja po punohet vazhdimisht ose diçka po ndodh me të, por kam ndjesinë se nuk duhet një javë që gjithçka të funksionojë siç duhet. Dhe realisht nuk vij më këtu, sepse pamja e re nuk më shkon. Të paktën kam përdorur versionin celular në iPhone, por tani nuk funksionon fare - si ndodh? Ata aktualisht nuk po u përgjigjen postimeve në komente.
@SteveJSF Fatkeqësisht, gjërat jo gjithmonë shkojnë ashtu siç duam ne. Sa për përgjigjet, shtojca e re SEO i prishi ato, aktualisht është duke u zgjidhur.
WP-Touch gjithashtu ndërpreu shërbimin tonë për disa arsye, kështu që ne vendosëm të gjenim një zgjidhje më të mirë se kjo shtojcë. Kështu që së shpejti mund të prisni lajmet e ardhshme :-)
Artikull i bukur. Për sa i përket praktikës, dua të them se jam dakord me disa gjëra dhe në shumicën e rasteve funksionon siç thuhet, por fatkeqësisht ka ende aplikacione të shkruara keq që nuk sillen siç duhet, dhe më pas ka raste si ky. vërejtur nga disa lexues. Unë mendoj se Skype është një shembull shumë i mirë, e di nga praktika që ai ende funksionon në sfond (dhe kjo është në rregull dhe kështu duhet të jetë), por problemi është se ky aplikacion e zbraz shumë baterinë e pajisjes dhe Nuk mund ta shoh më siç duhet. Anasjelltas, aplikacione si Facebook, Badoo etj. ato janë gjithashtu ende në sfond, por konsumi i tyre është pothuajse i padukshëm (të paktën unë nuk e vërej ndonjë). Kështu që unë mendoj se gabimi është në aplikacionet individuale. Nëse do ta dinit se cilat, do të mjaftonte të fikni manualisht vetëm ato!
Pra, praktika është që Facebook të funksionojë sipas nevojës dhe Skype vetëm kur nevojitet.
Epo, nga ana tjetër, nëse më duhet të kursej baterinë dhe e di që duhet ta mbaj iPhone "gjallë" sa më gjatë që të jetë e mundur, unë gjithashtu fik gjithçka të panevojshme në multitasking, por kryesisht nuk ka një ndikim të madh. por nëse është e nevojshme kufizoj 3G, të gjithë internetin celular, WiFi, shërbimet e vendndodhjes , modalitetin e aeroplanit, fuqinë e ndriçimit, etj. Si pjesë e rutinës, i çaktivizoj edhe aplikacionet e sipërpërmendura në multitasking.
Kështu që personalisht mendoj se artikulli është i vërtetë, për fat të keq disa programues i hedhin poshtë këto gjëra me aplikacionet e tyre, sepse aplikacionet e tyre janë të pasakta dhe për mendimin tim ka vetëm dy zgjidhje për këtë 1. Nëse është e mundur të mos përdoret aplikacioni dhe të gjendet një alternativë nëse është e mundur, ose 2. Nëse nuk është e mundur, shiko p.sh.
Mund të jetë e kotë të çaktivizosh aplikacionet me dorë, por unë e bëj gjithsesi. Gjithashtu u përpoqa të mos e fikja sistemin e aplikacionit, t'i lija të funksiononin (ose t'i lija në gjumë në sfond) dhe jetëgjatësia e baterisë ishte shumë më e ulët, gjithashtu ishte e nevojshme të rindizja iPad 2 pas rreth tre javësh, ai u përgjigj ngadalë. Kështu që i fik aplikacionet manualisht, bateria zgjat më shumë, së fundi e kam rindezur ditën e Krishtlindjes dhe po funksionon mirë.
Meqë ra fjala, unë bëj të njëjtën gjë në Mac OS X, thjesht mbyll aplikacionin që nuk më nevojitet (CMD+Q), është më mirë sesa të flejë në sfond dhe të hajë RAM pa nevojë (gjë që OS X mundet' nuk punon me shumë mirë). Kam pak RAM, vetëm 8 GB, por në Windows 7 me 8 GB, sistemi nuk reagoi ngadalë ose nuk ndërroi, në OS X ky është një fenomen mjaft i zakonshëm (Unë kurrë nuk e kam fikur kompjuterin, e bëj edhe me Mac , kështu që një muaj e më shumë nuk është një përjashtim, problemi është se ndonjëherë më duhet të rinis Mac si një masë paraprake për të liruar RAM-in dhe "përshpejtimin", Windows 7 nuk ka nevojë për këtë).
Unë jam më i interesuar se si të shpërthej në të vërtetë aplikacionin. Ajo që më ndodhi ishte se aplikacioni (konkretisht në Geocaching) u fut në një gjendje ku po ngarkonte diçka nga serveri prind dhe ngeci në atë gjendje. Butoni Home funksionoi, pas rindezjes u kthye në gjendje të ngrirë (ku e lashë). Dalja manuale (në menynë e shumë shijimit, mbani ikonën dhe minus për t'u mbyllur) = aplikacioni u zhduk, pasi rifilloi u hap në gjendjen e tij origjinale ku ngriu. Kështu që mbylla gjithçka, fika telefonin, e ndeza, klikova dy herë HOME dhe ja - aplikacionet ishin të gjitha aty siç ishin përpara se të mbylleshin pak para se të fikeshin. As rifillimi nuk ndihmoi - mbajeni në shtëpi dhe sipër derisa të bëhet nxehtë. E vetmja gjë që ndihmoi ishte heqja e aplikacionit nga telefoni, rinisja e tij dhe riinstalimi i tij në telefon. Disi nuk e pranova.
Ky menaxhim Multitasking funksionon dhe u takon zhvilluesve të përballen me këto situata. Për ata që janë të interesuar për një përshkrim më të detajuar dhe profesional të gjithë situatës, do të shkruaj këtu si është.
Aplikacioni mund t'i përgjigjet gjithsej 6 shteteve dhe këto gjendje janë:
aplikacioniWillResignActive
applicationDidEnterBackground
aplikacioniWillEnterForeground
aplikacioniDidBecomeActive
aplikacioni do të përfundojë
applicationDidReceiveMemoryWarning
Tani do të përpiqem t'i përshkruaj këto gjendje më në detaje.
applicationWillResignActive – ky status do të thotë që në të ardhmen (disa milisekonda) aplikacioni do të japë dorëheqjen si një aplikacion aktiv (d.m.th. aplikacioni në plan të parë) kjo ndodh për shembull kur merr një telefonatë gjatë përdorimit të aplikacionit, por në të njëjtën kohë koha që kjo metodë do të aktivizohet edhe para se aplikacioni të shkojë në sfond, kështu që ju duhet t'i merrni parasysh këto ndryshime. Kjo metodë është gjithashtu e përshtatshme që, për shembull, të pezullojë të gjitha aktivitetet që kryen kur ka një telefonatë hyrëse dhe të presë deri në fund të telefonatës.
applicationDidEnterBackground - ky status tregon që aplikacioni ka hyrë në sfond, zhvilluesit duhet të përdorin këtë metodë për të pezulluar të gjitha proceset që nuk kanë nevojë domosdoshmërisht të ekzekutohen në sfond dhe të pastrojnë memorien e të dhënave të papërdorura dhe proceseve të tjera, për shembull, kohëmatësit e skadimit, të qartë nga imazhe të ngarkuara me memorie që nuk do të nevojiten domosdoshmërisht ose do të ndërpresin lidhjen me serverët nëse nuk është kritike që aplikacioni të përfundojë lidhjen në sfond. Në thelb, kjo metodë kur thirret në aplikacion duhet të përdoret për të pezulluar plotësisht aplikacionin nëse një pjesë e tij nuk kërkohet të ekzekutohet në sfond.
applicationWillEnterForeground – kjo gjendje është e kundërta e gjendjes së parë kur aplikacioni do të japë dorëheqjen në gjendjen aktive. Kjo gjendje e aplikacionit thjesht do të thotë që në milisekondat e ardhshme aplikacioni i fjetur do të rifillojë nga sfondi dhe do të shfaqet në plan të parë (aplikacioni hyn në plan të parë), kjo metodë duhet të përdoret nga zhvilluesit për të rifilluar çdo proces që ishte joaktiv ndërsa aplikacioni ishte në sfond, lidhjet me serverët duhet të rivendosen, kohëmatësit të rivendosen, imazhet dhe të dhënat të ngarkohen në memorie dhe proceset e tjera të nevojshme mund të rifillojnë pak përpara se përdoruesi të shohë përsëri aplikacionin e ngarkuar.
applicationDidBecomeActive – ky status tregon që aplikacioni sapo është bërë aktiv pasi është rikthyer në plan të parë, kjo është një metodë që mund të përdoret për të bërë rregullime shtesë në ndërfaqen e përdoruesit ose për të rivendosur UI në gjendjen e tij origjinale, etj. Kjo metodë në fakt ndodh kur përdoruesi tashmë mund të shohë në ekran, kështu që është e nevojshme të përcaktohet nga bilanci se çfarë po ndodh në këtë metodë dhe në metodën e mëparshme. Ata thirren njëri pas tjetrit me një ndryshim prej disa milisekonda.
applicationWillTerminate - kjo gjendje ndodh disa milisekonda përpara se aplikacioni të përfundojë, domethënë përpara se aplikacioni të përfundojë në të vërtetë. Ose manualisht nga kryerja e shumë detyrave ose kur fikni pajisjen. Kjo metodë duhet të përdoret për të ruajtur të dhënat e përpunuara dhe për të përfunduar të gjitha aktivitetet dhe për të fshirë të dhënat që nuk do të nevojiten më.
applicationDidReceiveMemoryWarning - dhe ky është një kusht që diskutohet shumë këtu, nëse është e nevojshme, iOS do ta heqë aplikacionin nga memoria nëse përdor burimet e sistemit në mënyrë të panevojshme. Nuk e di saktësisht se çfarë bën iOS me aplikacionet në sfond, por nëse i duhet një aplikacion për të lëshuar burime në procese të tjera, ai e bën atë me një paralajmërim memorie për të lëshuar burimet që mban. Pra, kjo metodë thirret në aplikacion, dhe zhvilluesit duhet ta zbatojnë atë në mënyrë që aplikacioni të heqë dorë nga memoria që ka, të ruajë të përpunuara dhe të fshijë të dhënat e panevojshme nga memoria dhe në të kundërt të çlirojë në mënyrë adekuate memorien. Është e vërtetë që shumë zhvillues, për shembull fillestar, nuk mendojnë për gjëra të tilla ose nuk i kuptojnë ato, dhe më pas mund të ndodhë që aplikimi i tyre të rrezikojë jetën e baterisë dhe/ose të konsumojë në mënyrë të panevojshme burimet e sistemit edhe në sfond. Nuk e di se si do të sillet iOS nëse aplikacioni nuk bën asgjë pasi merr një paralajmërim memorie dhe vazhdon të konsumojë burimet e sistemit si më parë.
Këto pak gjendje dhe metoda të lidhura qëndrojnë pas gjithë "multitasking" në iOS... është një sistem i shkëlqyer nëse zhvilluesit nuk e injorojnë nevojën për të qenë përgjegjës për atë që aplikacionet do të hedhin në pajisjet e përdoruesve të tyre nëse ato minimizohen ose merrni paralajmërime nga sistemi dhe më shumë…
Shpresoj që ky përshkrim i shkurtër t'ju ndihmojë të kuptoni se si aplikacioni përfshihet në funksionimin e mirë të gjithçkaje. Pra, është pothuajse e mundur të thuhet se është një gabim i përdorimit të gabuar nga përdoruesi, i cili mund të kuptohet si - nëse përdorni aplikacione kryesisht falas nga zhvilluesit amatorë në një numër të madh, pajisja juaj iOS do të funksionojë më keq sesa nëse përdorni një pajisje të madhe. numri i aplikacioneve falas dhe me pagesë nga zhvillues me përvojë ose profesionistë. Kjo nuk do të thotë se nuk ka përjashtime në të dy qarqet. Për shembull, foursquare sillet mjaft çuditshëm dhe kërkues, dhe në të njëjtën kohë, dikush tashmë do të priste që ata janë zhvillues shumë të aftë që i kushtojnë shumë kohë kujtesës dhe menaxhimit të baterisë, por e kundërta është e vërtetë. Problemi më i madh me 4SQ është komunikimi me serverët, i cili shpesh varet dhe është i mbingarkuar. Ky është vetëm një shembull i faktit se edhe aplikacionet e njohura kanë probleme, gjë që nuk e ndryshon faktin që 4SQ është një shërbim i shkëlqyer.
Argëtohuni Mollët!! :)
Ne shtuam informacionin në artikull me lejen e mirë të autorit ;-)
Më vjen keq, ENTER ishte kudo midis paragrafëve, ata mund të bënin diçka për këtë këtu në mënyrë që komentet të kenë të paktën një FORMATIM TEKST TË PASUR.
ArnieX: faleminderit për komentin!!
Për Faramirin: Unë thjesht për problemin tuaj, nuk e di nëse do të ndihmojë në rastin tuaj, por e di nga përvoja ime që nëse e mbyllni aplikacionin (në multitasking) duhen disa sekonda derisa të mbyllet, kështu që nëse ju e fikni, ju rekomandoj të prisni disa sekonda (pret rreth 10 sekonda për t'u siguruar) derisa të përfundojë përfundimisht dhe vetëm atëherë ta rifilloj përsëri.
Ju mirëpresim ;) Unë do të jem i lumtur të ndihmoj nëse kam mundësi të kontribuoj.
Si duhet të jetë me Meeb, kur hyj në ICQ ose FB chat përmes tij, automatikisht del jashtë pas 10 minutash dhe dal jashtë linje apo vazhdon të funksionojë? faleminderit per sqarimin :P
Pas dhjetë minutash, lidhja e aplikacionit me internetin thjesht ndërpritet. Megjithatë, ju do të jeni ende në linjë në serverin Meeba dhe do të merrni një njoftim shtytës nëse dikush ju shkruan. Pas rihapjes së aplikacionit, lidhja do të vendoset në një moment dhe ju mund të vazhdoni të bisedoni me kënaqësi.
Pra, nëse e kuptova saktë artikullin që keni lidhur, statistikat i referohen vetëm dështimeve të aplikacioneve kur ato fillojnë, që është një përqindje mjaft e vogël e rasteve kur mund të ndodhin përplasje. Prandaj, është e pamundur të konkludohet nga ky "hulumtim" se iOS është më pak i qëndrueshëm për mendimin tim. Për më tepër, përkthyesi i artikullit të marrë nga Forbes harroi të përmendte se kompania që ofron të dhëna për dështimet e aplikacioneve mbështetet ndër të tjera nga Google ("Crittercism, e cila mbështetet nga Google Ventures,...").