Vis dar yra daug žmonių, kurie nežino, kaip „iOS“ veikia daugiafunkcinis darbas. Tačiau pirmiausia reikia pažymėti, kad tai nėra tikras daugiafunkcinis darbas, o labai protingas sprendimas, neapkraunantis nei sistemos, nei vartotojo.
Dažnai galima išgirsti prietarų, kad iOS fone veikiančios programėlės užpildo operacinę atmintį, o tai lemia sistemos sulėtėjimą ir akumuliatoriaus veikimo laiką, todėl vartotojas turėtų jas išjungti rankiniu būdu. Daugiafunkcinių užduočių juostoje iš tikrųjų nėra visų veikiančių foninių procesų sąrašo, o tik naujausios paleistos programos. Taigi vartotojui nereikia jaudintis dėl procesų, veikiančių fone, išskyrus kelis atvejus. Paspaudus „Home“ mygtuką, aplikacija dažniausiai išsijungia arba užsidaro, todėl nebekrauna nei procesoriaus, nei baterijos ir, jei reikia, atlaisvina reikiamos atminties.
Taigi tai nėra visavertis kelių užduočių atlikimas, kai veikia dešimtys procesų.Priekyje visada veikia tik viena programa, kuri prireikus pristabdoma arba visiškai išjungiama. Tik keli antriniai procesai veikia fone. Štai kodėl retai susidursite su programos gedimu iOS sistemoje, pavyzdžiui, Android yra perpildytas veikiančių programų, kuriomis vartotojas turi pasirūpinti. Viena vertus, dėl to darbas su įrenginiu yra nemalonus, kita vertus, tai sukelia, pavyzdžiui, lėtą paleidimą ir perėjimą tarp programų.
Programos vykdymo tipas
Programa jūsų iOS įrenginyje yra vienoje iš šių 5 būsenų:
- Bėga: programa paleidžiama ir veikia pirmame plane
- Fonas: jis vis dar veikia, bet veikia fone (galime naudoti kitas programas)
- Sustabdytas: Vis dar naudoja RAM, bet neveikia
- Neaktyvus: programa veikia, bet netiesioginės komandos (pavyzdžiui, kai užrakinate įrenginį, kai programa veikia)
- Neveikia: Paraiška nutraukta arba nepradėta
Sumišimas kyla, kai programa veikia fone, kad netrukdytų. Kai paspausite pradžios mygtuką arba gestą uždarysite programą (iPad), programa pereina į foną. Daugelis programų sustabdomos per kelias sekundes (jos saugomos „iDevice“ operatyviojoje atmintyje, kad jas būtų galima greitai paleisti, jos taip neapkrauna procesoriaus ir taip taupo baterijos veikimo laiką) Galite pamanyti, kad jei programa ir toliau naudos atmintį, rankiniu būdu ištrinti, kad atlaisvintumėte . Bet jūs neprivalote to daryti, nes „iOS“ tai padarys už jus. Jei fone laikinai sustabdyta sudėtinga programa, pvz., žaidimas, kuris naudoja daug RAM, „iOS“ automatiškai pašalins ją iš atminties, kai reikės, ir galite ją paleisti iš naujo paliesdami programos piktogramą.
Nė viena iš šių būsenų neatsispindi kelių užduočių juostoje, skydelyje rodomas tik neseniai paleistų programų sąrašas, neatsižvelgiant į tai, ar programa sustabdyta, pristabdyta ar veikia fone. Taip pat galite pastebėti, kad šiuo metu veikianti programa nerodoma kelių užduočių skydelyje
Fono užduotys
Įprastai paspaudus mygtuką „Pagrindinis“ programa veiks fone, o jei jos nenaudojate, per penkias sekundes automatiškai pristabdys. Taigi, jei, pavyzdžiui, atsisiunčiate podcast'ą, sistema įvertina ją kaip veikiančią programą ir atideda nutraukimą dešimčia minučių. Vėliausiai po dešimties minučių procesas pašalinamas iš atminties. Trumpai tariant, jums nereikia jaudintis dėl atsisiuntimo nutraukimo paspausdami pagrindinio puslapio mygtuką, jei tai neužtrunka ilgiau nei 10 minučių.
Neribotas veikimas fone
Neaktyvumo atveju sistema nutraukia aplikaciją per penkias sekundes, o atsisiuntimų atveju nutraukimas atidėtas dešimčiai minučių. Tačiau yra nedaug programų, kurias reikia veikti fone. Štai keletas programų, kurios gali neribotą laiką veikti fone iOS 5, pavyzdžiai:
- Programos, kurios groja garsą ir kurias reikia kuriam laikui pertraukti (muzikos pristabdymas pokalbio metu ir pan.),
- Programos, kurios seka jūsų buvimo vietą (navigacijos programinė įranga),
- Programos, priimančios VoIP skambučius, pavyzdžiui, jei naudojate „Skype“, galite priimti skambučius net tada, kai programa veikia fone,
- Automatiniai atsisiuntimai (pvz., Kioskas).
Visos programos turėtų būti uždarytos, jei jos nebeatlieka užduoties (pvz., atsisiunčiamos fone). Tačiau yra išimčių, kurios nuolat veikia fone, pvz., vietinė pašto programa. Jei jie veikia fone, jie užima atmintį, procesoriaus naudojimą arba sumažina akumuliatoriaus veikimo laiką
Programos, kurioms leidžiama neribotą laiką veikti fone, gali daryti bet ką, ką daro veikdamos – nuo muzikos leidimo iki naujų podcast epizodų atsisiuntimo.
Kaip jau minėjau anksčiau, vartotojui niekada nereikia uždaryti fone veikiančių programų. Vienintelė išimtis yra tada, kai fone veikianti programa užstringa arba tinkamai nepabunda iš miego. Tada vartotojas gali uždaryti programas rankiniu būdu kelių užduočių juostoje, tačiau taip nutinka retai.
Taigi, apskritai, jums nereikia valdyti foninių procesų, nes sistema jais pasirūpins pati. Štai kodėl „iOS“ yra tokia nauja ir greita sistema.
Iš kūrėjo perspektyvos
Programa gali reaguoti su šešiomis skirtingomis būsenomis kaip kelių užduočių dalis:
1. ApplicationWillResignActive
Išvertus ši būsena reiškia, kad programa ateityje (po kelių milisekundžių) atsisakys aktyvios programos (ty priekinio plano programos). Taip atsitinka, pavyzdžiui, kai sulaukiama skambučio naudojant programą, tačiau tuo pačiu metu šis metodas taip pat sukelia šią būseną prieš programai pereinant į foną, todėl reikia atsižvelgti į šiuos pakeitimus. Šis metodas taip pat tinkamas, kad, pavyzdžiui, sustabdytų visas savo atliekamas veiklas, kai yra įeinantis skambutis, ir laukiama iki skambučio pabaigos.
2. applicationDidEnterBackground
Būsena rodo, kad programa perėjo į foną. Kūrėjai turėtų naudoti šį metodą norėdami sustabdyti visus procesus, kurie nebūtinai turi veikti fone, ir išvalyti nenaudojamų duomenų bei kitų procesų atmintį, pvz., besibaigiančius laikmačius, išvalyti įkeltus vaizdus iš atminties, kurių nebūtinai reikės, arba uždaryti. ryšiams su serveriais, nebent programai labai svarbu užbaigti ryšius fone. Kai metodas iškviečiamas programoje, jis iš esmės turėtų būti naudojamas visiškai sustabdyti programą, jei kai kurios jos dalies nereikia veikti fone.
3. ApplicationWillEnterForeground
Ši būsena yra priešinga pirmajai būsenai, kai programa atsistatys į aktyvią būseną. Būsena tiesiog reiškia, kad miego programa bus atnaujinta fone ir per kelias ateinančias milisekundes pasirodys priekiniame plane. kūrėjai turėtų naudoti šį metodą, kad atnaujintų visus procesus, kurie buvo neaktyvūs, kol programa veikė fone. Ryšiai su serveriais turi būti atstatyti, laikmačiai nustatyti iš naujo, vaizdai ir duomenys įkelti į atmintį, o kiti būtini procesai gali būti atnaujinti prieš pat vartotojui vėl pamatant įkeltą programą.
4. ApplicationDidBecomeActive
Būsena nurodo, kad programa ką tik suaktyvėjo po to, kai buvo atkurta į pirmą planą. Tai metodas, kurį galima naudoti norint atlikti papildomus vartotojo sąsajos koregavimus arba atkurti vartotojo sąsają į pradinę būseną ir pan. Tai iš tikrųjų atsitinka tuo metu, kai vartotojas jau mato programą ekrane, todėl būtina atsargiai nustatykite, kas vyksta naudojant šį ir ankstesnį metodą. Jie vadinami vienas po kito su kelių milisekundžių skirtumu.
5. ApplicationWillTerminate
Ši būsena įvyksta likus kelioms milisekundėms iki programos išėjimo, ty prieš tai, kai programa iš tikrųjų baigiasi. Rankiniu būdu iš kelių užduočių arba išjungiant įrenginį. Šis metodas turėtų būti naudojamas apdorotiems duomenims išsaugoti, visai veiklai užbaigti ir nebereikalingiems duomenims ištrinti.
6. ApplicationDidReceiveMemoryWarning
Apie paskutinę būseną daugiausia diskutuojama. Ji yra atsakinga už, jei reikia, programos pašalinimą iš iOS atminties, jei ji be reikalo naudoja sistemos išteklius. Nežinau, ką konkrečiai „iOS“ veikia su foninėmis programomis, bet jei jai reikia programos, kad būtų išleisti ištekliai kitiems procesams, ji paragins ją su atminties įspėjimu išleisti visus turimus išteklius. Taigi šis metodas vadinamas programoje. Kūrėjai turėtų tai įdiegti taip, kad programa atsisakytų jai skirtos atminties, išsaugotų viską, kas vyksta, iš atminties išvalytų nereikalingus duomenis ir šiaip adekvačiai atlaisvintų atmintį. Tiesa, daugelis kūrėjų, net ir pradedantieji, apie tokius dalykus negalvoja ir nesupranta, o tada gali atsitikti taip, kad jų aplikacija kelia grėsmę baterijos tarnavimo laikui ir/arba be reikalo eikvoja sistemos resursus net fone.
Nuosprendis
Šios šešios būsenos ir su jomis susiję metodai yra visų „iOS“ daugiafunkcinių užduočių pagrindas. tai puiki sistema, jei tik kūrėjai neignoruoja fakto, kad reikia būti atsakingam už tai, ką aplikacija išmeta vartotojų įrenginiuose, jei jos yra sumažintos arba sulaukia įspėjimų iš sistemos ir pan.
Šaltinis: „Macworld.com“
Autoriai: Jakubas Požarekas, Martinas Doubekas (ArnieX)
Ar jūs taip pat turite išspręsti problemą? Reikia patarimo, o gal rasti tinkamą pritaikymą? Nedvejodami susisiekite su mumis naudodami skiltyje esančią formą Konsultavimas, kitą kartą atsakysime į jūsų klausimą.
Sveiki, tikrai šaunus straipsnis, bet įdomu, ar turite techninės pagalbos. Kadangi bateriją esu sprendęs kelis kartus vakare prieš miegą ir pasitaikė, kad išjungus wifi ir mobiliuosius duomenis užtruko daugiau nei kitu atveju išjungus wifi ir tik 3G.
Deja, patirtis tokia, kad iOS sistemoje programas tenka išjungti rankiniu būdu, o sistema nebeveikia taip gerai, kaip anksčiau.
iPhone pakeičiau į Windows Phone (Samsung Omnia W už 6200,-) ir sistemos greitis visai kitame lygyje.
Bijau, kad kai pasirodys Windows 8 Metro planšetės, pakeisiu ir iPad...
@007 – taip, jei lyginate senus iPhone3G su naujaisiais WP, tai taip (kas to tikėjosi?) WP bus šiek tiek greitesnis. Šiaip apkalbos apie Karlulką tau nesiseka ir buvo tikslinga palyginti dabartinį HW. Aš taip pat nusipirkau WP7 ir galiausiai gavau 4s, o tai reiškia visiškai kitokį naudojimo lygį nei WP7. Taigi maloniai praleiskite ir be galo slinkite per plyteles.
Visiškai sutinku su Paja
Vėl prisidėčiau iš kitos statinės nuolaužų - Samsung Galaxy S ir iPhone 4 - pagal amžių sakyčiau palyginamas? „IOS 4“ laikais, kalbant apie patogumą ir greitį, kitur, o ne „Android“, „Apple“ labai gerai išsprendė darbo su programomis koncepciją, tačiau su „Android“ to nebegalima. Galų gale aš vis tiek atsidūriau su 4S ir neturiu priekaištų, nes "jis tiesiog veikia" .. ir veikia labai greitai!
Teorija graži... Bet praktikoje vis tiek aplikaciją uždarau bare ;)
Ačiū, labai įdomu, pragmatiška, įdomi, jame netrūksta sūpynių ir gylio. Gerokai pabrėžia šiuolaikinio jaunimo maniją dėl šio uždrausto prekės ženklo! Bet ačiū už ją ir už šį straipsnį.
Straipsnis visiškai neteisingas.
Programa neišsijungia paspaudus pagrindinį mygtuką, kaip klaidingai nurodyta, bet pristabdo. T.y. tikrai neištrinkite iš atminties ir neišeikite. Tiesiog pristabdykite paleidimą, „iOS“ šiai programai skirs 0% procesoriaus laiko. Jis tikrai „nekeičiamas“ niekur „iDevice“ atmintyje, kaip teigiama straipsnyje. Tai tikrai dėka to, kad galima naudoti programų perjungimą.
Programa pašalinama iš atminties, kai telefone mažai atminties, kad galėtų paleisti kitas aukštesnio prioriteto programas (paprastai priekyje veikia kita programa).
Pirmuoju atveju jūs teisus, tai buvo vertimo klaida. Kalbant apie keitimą, mes čia ne apie tai kalbame, mes kalbame apie operacinę atmintį, o ne apie atminties vietą iOS įrenginyje.
programos vaizdas saugomas atmintyje ribotą laiką, kol ji vėl iškviečiama komanda (žr. 13,7 GB iš 16 GB: 2,3 GB rezervuota sistemai ir sustabdytoms programoms)
Taigi būtina atskirti tokias programas kaip Navigacija, Skype ir panašiai, šios programos išlieka aktyvios net fone arba tam tikra funkcija nesibaigia ir toliau, pavyzdžiui, siunčia duomenis apie savo vietą ar vietos informaciją. Arba kaip Vokul pord režimu klausykite, o kelių užduočių atlikimas vis dar klausosi fone.
Šios programos eikvoja bateriją ir jas būtina uždaryti rankiniu būdu ir nelaukti iOS. su kitais tai nebūtina, ten tik tuo atveju, jei programa sugenda.
Negaliu sutikti su straipsniu. Min. 1 kartos iPad (iOS 5.0.1) aiškiai matosi, ar daugiafunkcinėje juostoje turiu daug "atvirų" programų, ar tik kelias. „iOS“ bando išvalyti atmintį, tačiau akivaizdžiai to nepakanka – maža RAM yra bene didžiausia jos silpnybė.
taigi daug kas priklauso nuo sistemos ir naudojamos aparatūros, visiškai logiška, kad iPad 1 su iOS 5.0.1 bus blogiau nei 2 kartos iPad
Atsiprašau, kolega, tai yra IDEALUS būdo, kaip jis turėtų veikti, aprašymas. Deja, realybė yra visiškai kitokia ir jūs tai žinotumėte, jei naudotumėte Apple produktus, bent tiek, kiek aš (ty retkarčiais).
„Dažnai galite išgirsti prietarų, kad „iOS“ fone veikiančios programos užpildo operacinę atmintį.
Tai ne prietaras, tai tiesiog faktas. Juk jūs pats tai tvirtinate straipsnyje.
„Kaip jau minėjau, vartotojui niekada nereikia uždaryti fone veikiančių programų.
NEMONĖS. Tai tik nesąmonė, obuolių propaganda, nepyk ant manęs.
„Tačiau jūs neprivalote to daryti, nes „iOS“ tai padarys už jus. Jei fone laikinai sustabdyta sudėtinga programa, pvz., žaidimas, kuris naudoja daug RAM, „iOS“ automatiškai pašalins ją iš atminties, kai reikės, ir galėsite ją paleisti iš naujo paliesdami programos piktogramą.
Netiesa. Situacija kiek kitokia. Tipiškas pavyzdys – turiu sudėtingas programas, kurios veikia fone, man reikia žaidimų. Paleidžiu naršyklę, atidarau porą skirtukų -> reikia daugiau atminties. Kas nutiks? Fone laikau reiklias programas, priešingai, PATI NARŠYKLĖ KRENTA. Jei reiklias programas uždarau rankiniu būdu, naršyklė veikia ilgą laiką be jokių problemų.
Tai praktika, o ne teorija. Ir aš nustebęs, kad jūs, kaip ilgalaikis Apple produkto vartotojas, vis dar to nežinote.
Ačiū, tai labai gerai aprašyta ir gerai paaiškinta. Tu man labai padėjai ;-) ♥
Tik įžangai nesu nei už, nei prieš iOS, kaip ir su Android, bet čia yra keletas keistų dalykų, jei kaip čia parašyta: "su iOS retai susiduriate su aplikacijos gedimu", tai su Android programos tikriausiai sugenda kartą per metus: -P
http://dotekomanie.blog.mobilmania.cz/2012/02/stabilita-ios-vs-android/
Taip, bet atvejų, kai reikia uždaryti programą rankiniu būdu, yra tikrai minimalus, aš jį naudojau maždaug vieną kartą? ;-) o duoti nuorodą į palyginimo testą iš Mobilemanijos visai beprasmiška, kai noriu pasiskaityti apie reklamą, kurią google mokėjo, pasižiūrėsiu ten ;-) kiekvienas gali gauti bet kokį android telefoną į rankas ir tai neveiks švariai, tai yra, išskyrus „Galaxy Nexus“, nes sistema yra daugiau ar mažiau pritaikyta pagal užsakymą. Apskritai „Android“ yra katastrofa
@Mek – Apple produktus naudoju kasdien jau keletą metų ir man taip niekada nebuvo nutikę, todėl tavo teorija kažkaip neveikia.
PIKTŽOLĖ:
@redakce – Matosi, kad prie svetainės nuolat dirbama arba kažkas su ja vyksta, bet toks jausmas, kad nepraeina savaitė, kad viskas veiktų taip, kaip turėtų. Ir aš čia jau tikrai nevažiuoju, nes naujas vaizdas man netinka. Bent jau aš naudojau mobiliąją versiją iPhone, bet dabar ji visiškai neveikia – kaip taip? Šiuo metu jie nereaguoja į įrašus komentaruose.
@SteveJSF Deja, ne visada viskas klostosi taip, kaip norime. Kalbant apie atsakymus, naujas SEO įskiepis juos sulaužė, šiuo metu tai sprendžiama.
WP-Touch dėl tam tikrų priežasčių taip pat nutraukė mūsų paslaugą, todėl nusprendėme sugalvoti geresnį sprendimą nei šis papildinys. Tad jau greitai galite laukti kitų naujienų :-)
Puikus straipsnis. Kalbant apie praktiką, norėčiau pasakyti, kad aš sutinku su keliais dalykais ir dažniausiai tai veikia taip, kaip nurodyta, bet, deja, vis dar yra prastai parašytų prašymų, kurie elgiasi netinkamai, o tada būna tokių atvejų kaip pastebėjo kai kurie skaitytojai. Manau, kad „Skype“ yra labai geras pavyzdys, iš praktikos žinau, kad jis vis dar veikia fone (ir tai gerai ir taip turėtų būti), bet problema ta, kad ši programa labai išeikvoja įrenginio bateriją ir Nebematau kaip reikiant. Ir atvirkščiai, tokios programos kaip Facebook, Badoo ir kt. jie taip pat vis dar veikia fone, bet jų suvartojimas beveik nepastebimas (bent jau aš nepastebiu). Taigi manau, kad klaida yra atskirose programose. Jei žinotumėte, kuriuos, užtektų rankiniu būdu išjungti tik tuos!
Taigi praktika tokia, kad Facebook veikia kaip reikia, o Skype – tik tada, kai reikia.
Na, o kita vertus, jei reikia taupyti bateriją ir žinau, kad turiu kuo ilgiau išlaikyti iPhone "gyvą", tai irgi išjungiu viską, kas nereikalinga atliekant multitasking, bet dažniausiai tai neturi didelės įtakos bet jei reikia, riboju 3G, visą mobilųjį internetą, WiFi, vietos nustatymo paslaugas, lėktuvo režimą, apšvietimo stiprumą ir t.t. Įprastai išjungiu minėtas programas atliekant daugiafunkcinį darbą.
Taigi aš asmeniškai manau, kad straipsnis yra teisingas, deja, kai kurie programuotojai paneigia šiuos dalykus savo programomis, nes jų programos yra neteisingos ir, mano nuomone, yra tik du sprendimai 1. Jei yra galimybė nenaudoti programos ir rasti alternatyva, jei įmanoma, arba 2. Jei tai neįmanoma, žiūrėkite pvz Skype, parašykite tai nurodytam programuotojui ataskaitoje ir tikėkitės, kad jie ką nors padarys.
Gali būti beprasmiška išjungti programas rankiniu būdu, bet aš vis tiek tai darau. Taip pat bandžiau neišjungti aplikacijų sistemos, leisti joms veikti (arba palikti miegoti fone) ir baterijos tarnavimo laikas buvo daug mažesnis, taip pat reikėjo perkrauti iPad 2 po kokių trijų savaičių, reagavo lėtai. Taigi programas išjungiu rankiniu būdu, baterija laiko ilgiau, neseniai Kalėdų dieną paleidau iš naujo ir veikia puikiai.
Beje, tą patį darau ir su Mac OS X, tik uždarau programą, kurios man nereikia (CMD+Q), tai geriau nei miegoti fone ir be reikalo eikvoti RAM (ką OS X gali t labai gerai dirbti). Turiu mažai RAM, tik 8 GB, bet Windows 7 su 8 GB sistema nereagavo lėtai ir nesikeitė, OS X tai gana dažnas reiškinys (niekada neišjungiau kompiuterio, tai darau ir su Mac, taigi mėnuo ir daugiau darbo laikas nėra išimtis, problema ta, kad kartais turiu iš naujo paleisti Mac, kad atlaisvinčiau RAM ir "paspartinčiau", Windows 7 to nereikia).
Mane labiau domina, kaip iš tikrųjų patobulinti programą. Man atsitiko tai, kad programa (konkrečiai „Geocaching“) pateko į būseną, kai ji kažką įkėlė iš pirminio serverio, ir įstrigo šioje būsenoje. Pagrindinis mygtukas veikė, po perkrovimo jis grįžo į užšaldytą būseną (ten, kur baigiau). Rankinis išėjimas (į daugiaskonių meniu palaikykite paspaudę piktogramą ir minusą, kad uždarytumėte) = programa dingo, paleidus iš naujo ji atsidarė pradinėje būsenoje, kur užstojo. Taigi viską uždariau, išjungiau telefoną, įjungiau, du kartus paspaudžiau HOME ir štai – programos buvo visos tokios, kokios buvo prieš uždarant prieš pat išjungiant. Nepadėjo ir paleidimas iš naujo – laikykite namuose ir viršutinį, kol įkais. Vienintelis dalykas, kuris padėjo, buvo programos pašalinimas iš telefono, paleidimas iš naujo ir įdiegimas telefone. Kažkaip nepriėmiau.
Šis daugiafunkcinis valdymas veikia ir kūrėjai turi susidoroti su tokiomis situacijomis. Besidomintiems detalesniu ir profesionalesniu visos situacijos aprašymu parašysiu čia kaip yra.
Programa gali reaguoti į 6 būsenas ir šios būsenos yra:
ApplicationWillResignActive
applicationDidEnterBackground
applicationWillEnterForeground
ApplicationDidBecomeActive
ApplicationWillTerminate
ApplicationDidReceiveMemoryWarning
Dabar pabandysiu šias būsenas apibūdinti plačiau.
applicationWillResignActive – ši būsena reiškia, kad ateityje (per kelias milisekundes) programa atsistatydins kaip aktyvi programa (t. y. priekinio plano programa), tai atsitinka, pavyzdžiui, kai sulaukiama skambučio naudojant programą, bet tuo pačiu metodas, todėl ši būsena suaktyvės dar prieš programai pereinant į foną, todėl turite atsižvelgti į šiuos pakeitimus. Šis metodas taip pat tinkamas, kad, pavyzdžiui, sustabdytų visas savo atliekamas veiklas, kai yra įeinantis skambutis, ir laukiama iki skambučio pabaigos.
applicationDidEnterBackground - ši būsena rodo, kad programa pateko į foną, kūrėjai turėtų naudoti šį metodą norėdami sustabdyti visus procesus, kurie nebūtinai turi veikti fone ir išvalyti atmintį nuo nenaudojamų duomenų ir kitų procesų, pavyzdžiui, galiojimo laikmačius, išvalyti iš atmintyje įkelti vaizdai, kurie nebūtinai bus reikalingi arba nutraukti ryšį su serveriais, jei tai nėra labai svarbu, kad programa užbaigtų ryšį fone. Iš esmės šis metodas, kai jis iškviečiamas programoje, turėtų būti naudojamas norint visiškai sustabdyti programą, jei kai kurios jos dalies nereikia paleisti fone.
applicationWillEnterForeground – ši būsena yra priešinga pirmajai būsenai, kai programa atsistatys į aktyvią būseną. Ši programos būsena tiesiog reiškia, kad per kelias artimiausias milisekundes miego programa atnaujins iš fono ir pasirodys priekiniame plane (programa patenka į priekinį planą), šį metodą kūrėjai turėtų naudoti norėdami atnaujinti visus procesus, kurie buvo neaktyvūs, kol programa buvo fone turėtų būti atkurti ryšiai su serveriais, iš naujo nustatyti laikmačiai, įkelti vaizdai ir duomenys į atmintį, o kiti būtini procesai gali būti atnaujinti prieš pat vartotojui vėl pamatant įkeltą programą.
applicationDidBecomeActive – ši būsena rodo, kad programa ką tik suaktyvėjo po to, kai buvo atkurta į pirmą planą. Tai metodas, kurį galima naudoti norint atlikti papildomus vartotojo sąsajos koregavimus arba atkurti vartotojo sąsają į pradinę būseną ir pan. Šis metodas iš tikrųjų atsitinka kai vartotojas jau gali matyti ekrane, todėl iš balanso reikia nustatyti, kas vyksta šiuo ir ankstesniu metodu. Jie vadinami vienas po kito su kelių milisekundžių skirtumu.
applicationWillTerminate – ši būsena įvyksta likus kelioms milisekundėms iki programos pabaigos, ty prieš tai, kai programa iš tikrųjų baigiasi. Rankiniu būdu iš kelių užduočių arba išjungiant įrenginį. Šis metodas turėtų būti naudojamas norint išsaugoti apdorotus duomenis ir baigti visas veiklas bei ištrinti duomenis, kurie nebebus reikalingi.
applicationDidReceiveMemoryWarning - ir tai yra sąlyga, apie kurią čia daug kalbama, jei reikia, iOS pašalins programą iš atminties, jei ji be reikalo naudos sistemos išteklius. Tiksliai nežinau, ką „iOS“ veikia su foninėmis programomis, bet jei jai reikia programos, kad būtų galima išleisti išteklius kitiems procesams, ji paragins ją su atminties įspėjimu išleisti turimus išteklius. Taigi šis metodas yra vadinamas programoje, o kūrėjai turėtų jį įdiegti taip, kad programa atsisakytų turimos atminties, išsaugotų apdorotus ir ištrintų nereikalingus duomenis iš atminties ir šiaip adekvačiai atlaisvintų atmintį. Tiesa, daugelis kūrėjų, pavyzdžiui, pradedančiųjų, apie tokius dalykus nesusimąsto arba jų nesupranta, o tada gali atsitikti taip, kad jų aplikacija kelia pavojų baterijos tarnavimo laikui ir/ar net fone be reikalo eikvoja sistemos resursus. Nežinau, kaip iOS elgsis, jei programa, gavusi įspėjimą apie atmintį, nieko nedarys ir toliau eis sistemos resursus kaip anksčiau.
Šios kelios būsenos ir susiję metodai slypi už viso „daugiafunkcinio“ iOS sistemoje... tai puiki sistema, jei kūrėjai neignoruoja būtinybės būti atsakingiems už tai, ką programos išmes savo vartotojų įrenginiuose, jei jos bus sumažintos iki minimumo. arba gauti įspėjimus iš sistemos ir dar daugiau...
Tikiuosi, kad šis trumpas aprašymas padės suprasti, kaip programa prisideda prie to, kad viskas veiktų sklandžiai. Taigi beveik galima teigti, kad tai yra neteisingo vartotojo naudojimo klaida, kurią galima suprasti taip - jei daug naudosite daugiausia nemokamas mėgėjų kūrėjų programas, jūsų iOS įrenginys veiks prasčiau nei naudojant didelę patyrusių ar profesionalių kūrėjų nemokamų ir mokamų programų skaičius. Tai nereiškia, kad abiejuose sluoksniuose nėra išimčių. Pavyzdžiui, „foursquare“ elgiasi gana keistai ir reikliai, o tuo pačiu galima tikėtis, kad tai labai įgudę kūrėjai, skiriantys daug laiko atminčiai ir baterijų valdymui, tačiau yra atvirkščiai. Didžiausia 4SQ problema yra bendravimas su serveriais, kuris dažnai stringa ir yra perpildytas. Tai tik pavyzdys, kad net ir gerai žinomos programos turi problemų, o tai nekeičia fakto, kad 4SQ yra puiki paslauga.
Linksmų obuolių!! :)
Informaciją prie straipsnio įtraukėme su maloniu autoriaus leidimu ;-)
Atsiprašau, ENTER buvo visur tarp pastraipų, jie čia galėtų ką nors padaryti, kad komentaruose būtų bent šiek tiek RAŠTINIO TEKSTO FORMAVIMO.
ArnieX: ačiū už komentarą!!
Tas Faramiras: Aš tik apie jūsų problemą, nežinau, ar tai padės jūsų atveju, bet iš savo patirties žinau, kad uždarius programą (daugiafunkciniame režime) užtrunka kelias sekundes, kol ji užsidaro, taigi, jei išjungiate, rekomenduoju palaukti kelias sekundes (aš palaukiu apytiksliai 10 sekundžių, kad įsitikinčiau), kol jis tikrai baigsis, ir tik tada vėl pradėsiu.
Malonu ;) Mielai padėsiu, jei turėsiu galimybę prisidėti.
Kaip turi būti su Meeb, kai prisijungiu prie ICQ ar FB pokalbių per jį, jis automatiškai atsijungia po 10 minučių ir aš atsijungiu ar veikia toliau? ačiū už paaiškinimą :P
Po dešimties minučių programos ryšys su internetu tiesiog nutrūksta. Tačiau vis tiek būsite prisijungę prie Meeba serverio ir gausite tiesioginį pranešimą, jei kas nors jums parašys. Iš naujo atidarius programą, ryšys bus užmegztas akimirksniu ir galėsite linksmai kalbėtis toliau.
Taigi, jei teisingai supratau jūsų nurodytą straipsnį, statistika nurodo tik programų gedimus jiems paleidus, o tai yra gana mažas procentas atvejų, kai gali įvykti gedimai. Todėl iš šio „tyrimo“ negalima daryti išvados, kad „iOS“, mano nuomone, yra mažiau stabili. Be to, iš „Forbes“ paimto straipsnio vertėjas pamiršo paminėti, kad kompaniją, teikiančią duomenis apie programų gedimus, be kita ko palaiko „Google“ („Crittercism, which is backed by Google Ventures,...“).